0

車のあるテーブルがあります:

  • 車ID
  • 顧客ID
  • ...

マッピング ファイルは次のようになります。

<hibernate-mapping>
    <class name="org.project.Car" table="tblCar">
        <id name="id" column="CarId" type="int">
            <generator class="native"/>  
        </id>
        <property column="CustomerId" name="customerId" type="text"/>
        <many-to-one column="CustomerId" name="customer" class="org.project.Customer" insert="false" update="false"  fetch="select"/>
        ...
    </class>
</hibernate-mapping>

問題は、多対 1 列にあります。それを削除すると、すべての車をロードできます。そこにあると、次のエラーが表示されます。

INFO: could not read column value from result set: Cus2_3_0_; Value 00005-C cannot be converted to INTEGER.

、00005-C は顧客の ID です。

いったいなぜ Hibernate は customerId 列がテキストであるときに整数にキャストしたいのでしょうか? または、外部キーに整数 ID のみを使用できますか?

編集: 私の顧客マッピングはおおよそ次のようになります。

<hibernate-mapping>
    <class name="org.project.Customer" table="tblCustomer">
        <id name="id" column="Id" type="integer">
            <generator class="native"/>  
        </id>
        <property column="CustomerId" name="customerId" type="text"/>
        ...
        <set name="cars" inverse="true" lazy="true" fetch="select">
            <key column="CustomerId" not-null="true"/>
            <one-to-many class="org.project.Car"/>
        </set>
    </class>
</hibernate-mapping>
4

2 に答える 2

0

私は問題を見つけました:

使用しているキーが主キーではなく別のフィールドであることを Hibernate に伝えるために、Customer マッピングのキーに property-ref を追加する必要がありました。これは、Hibernate が値を int にキャストしたかった理由を説明しています。主キーは整数です。

于 2013-10-20T18:20:32.477 に答える