在我的DeviceAttributes.hbm.xml文件中,我想执行以下操作:
<property
name="deviceId"
type="java.lang.String"
not-null="true"
column="DeviceID"
unique="true"
length="32">
<meta attribute="field-description">
@hibernate.property
column="DeviceID"
unique="true"
length="32"
not-null="true"
</meta>
</property>
<many-to-one
name="device"
class="Device"
not-null="false"
property-ref="deviceId">
<meta attribute="field-description">
@hibernate.many-to-one
not-null="true"
@hibernate.column name="DeviceID"
</meta>
<column name="DeviceID" />
</many-to-one>
但是我收到了错误:
实体映射中的重复列:DeviceAttributes列: DeviceID(应使用insert =“false”update =“false”映射)
我知道我收到此错误是因为我将列“DeviceID”映射了两次;一次在“property”标签中,一次在“many-to-one”标签中。
有没有办法可以将“DeviceID”列映射到JavaBean属性并使用它来连接这两个表?
答案 0 :(得分:2)
如果您决定使用ORM和对象,那么为什么您仍然希望仅将device
而不是deviceId
映射为多对一?您可以随时deviceAttribute.getDevice().getId()
访问insert="false" update="false"
字段。
如果您仍需要两次地图设备,则应确定将用于编写设备属性的那个,然后在设备字段映射之一中添加{{1}}属性。