1

いくつかの null 列を含むテーブルから読み取るビューがあります。このビューを読み取る休止状態のコードがあります。問題は、この null 値が原因で hibernate がこのレコードを読み取ることができないことです。ログを見ると、次のように表示されます

DEBUG [http-bio-8080-exec-1][2013-05-20 23:34:16,243][NullableType.java:166] - 列として null を返す: address19_0_

null 以外のすべての列を読み取ることができますが、この場合 null であるアドレスになると例外がスローされます。休止状態がこれを読み取れないのはなぜですか?

Eclipse hibernate ツールを使用して POJO および hbm.xml ファイルを生成しています。hibernate ツールの build.xml は次のとおりです。

<taskdef name="hibernatetool" classname="org.hibernate.tool.ant.HibernateToolTask">
    <classpath>
        <fileset dir="C:\eclipse\order\WebContent\WEB-INF\lib">
            <include name="**/*.jar" />
        </fileset>
    </classpath>
</taskdef>

<target name="gen_hibernate" description="generate hibernate classes">
    <hibernatetool destdir="C:\eclipse\order\GenCode">
        <jdbcconfiguration configurationfile="hibernate.cfg.xml"
            packagename="com.order" detectmanytomany="true" />
        <hbm2hbmxml destdir="src" />
        <hbm2java jdk5="true" destdir="src" />
        <hbm2cfgxml destdir="src" />
        <hbm2doc />
    </hibernatetool>

    <copy todir="C:\eclipse\order\src\order\">
        <fileset dir="C:\eclipse\order\GenCode\src\com\order\">
            <include name="**/*.java" />
            <include name="**/*.hbm.xml" />
        </fileset>
    </copy>
    <copy file="C:\eclipse\order\GenCode\src\hibernate.cfg.xml" todir="C:\eclipse\order\src\" />
</target>

そして、これがビュー用に生成されたhbm.xmlです。複合IDで生成されています

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated May 20, 2013 11:26:25 PM by Hibernate Tools 3.2.0.CR1 -->
<hibernate-mapping>
    <class name="com.order.VOrderdetail" table="v_orderdetail" catalog="order">
        <composite-id name="id" class="com.order.VOrderdetailId">
            <key-property name="orderId" type="int">
                <column name="orderId" />
            </key-property>
            <key-property name="userId" type="int">
                <column name="userId" />
            </key-property>
            <key-property name="createDate" type="date">
                <column name="createDate" length="0" />
            </key-property>
            <key-property name="description" type="string">
                <column name="description" length="65535" />
            </key-property>
            <key-property name="addressLine1" type="string">
                <column name="addressLine1" length="100" />
            </key-property>
            <key-property name="addressLine2" type="string">
                <column name="addressLine2" length="100" />
            </key-property>
            <key-property name="city" type="string">
                <column name="city" length="100" />
            </key-property>
            <key-property name="state" type="string">
                <column name="state" length="10" />
            </key-property>
            <key-property name="zipCode" type="string">
                <column name="zipCode" length="10" />
            </key-property>
        </composite-id>
    </class>
</hibernate-mapping>
4

1 に答える 1

2

null 値を含む列にマップされるプロパティは、複合 ID の一部として使用しないでください。このユースケースについては、却下されたチケットHHH-1109があります。

于 2013-05-21T18:52:25.333 に答える