車のあるテーブルがあります:
- 車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>