我有一个hibernate映射文件ParcelServicePresetIds.hbm.xml:
<hibernate-mapping>
<class name="de.delife.sql.ParcelServicePresetIds" table="ParcelServicePresetIDs" schema="dbo" catalog="xxx">
<id name="id" type="int">
<column name="ID" />
<generator class="assigned" />
</id>
<many-to-one name="itemsBase" class="de.sql.ItemsBase" fetch="select" property-ref="itemId">
<column name="ItemID" />
</many-to-one>
<property name="itemId" column="ItemID" type="java.lang.Integer"/>
<property name="intValue" type="java.lang.Integer">
<column name="intValue" />
</property>
</class>
</hibernate-mapping>
当我运行程序时出现错误:
Initial SessionFactory creation failed.org.hibernate.MappingException: Repeated column in mapping for entity: de.sql.ParcelServicePresetIds column: ItemID (should be mapped with insert="false" update="false")
为什么?
我有另一个实体Others.hbm.xml:
<many-to-one name="itemsBase" class="de.sql.ItemsBase" fetch="select" property-ref="itemId">
<column name="ItemID" unique="true" />
</many-to-one>
<property name="itemId" column="ItemID" type="java.lang.Integer"/>
在这个实体中,它正在工作!我不明白! 有人可以解释这个区别吗?
答案 0 :(得分:0)
您要两次声明ItemID
列:一次使用<property />
,第二次使用<many-to-one />
代码。
删除一个(可能是<property/>
声明)
答案 1 :(得分:0)
您可能不需要在这里使用propertyRef。它可能只是:
<many-to-one name="itemsBase" class="de.sql.ItemsBase" fetch="select" column="ItemID"/>
此外,您不需要itemId
的属性声明。
回答问题的第二部分:
insert="false" update="false"