[英]Hibernate XML - composite-id with one-to-one mapping
我無法讓它工作。 錯誤說Broken column mapping
。 它必須是單方面的一對一映射。 復合 ID 的只有一部分連接到另一個實體。 頻道將根據登錄用戶的訪問頻道插入。 我有2節課。
public class UserModel implements Serializable{
private final Long id;
private final UserLimitsModel userLimitsModel;
}
public class UserLimitsModel implements Serializable{
private final Long userId;
private final String channel;
}
然后 2 個休眠 .xml 映射
<hibernate-mapping>
<class name="abcdefgh.UserLimitsModel" table="USER_LIMITS" lazy="false">
<composite-id>
<key-property name="userId" type="long">
<column name="USER_ID" not-null="true"/>
</key-property>
<key-property name="channel" type="string" length="20">
<column name="CHANNEL" not-null="true"/>
</key-property>
</composite-id>
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="abcdefgh.UserModel" table="USER" lazy="false">
<id name="id" type="long">
<column name="ID" precision="19" scale="0" />
<generator class="sequence">
<param name="sequence_name">ID_SEQ</param>
</generator>
</id>
<one-to-one name="userLimitsModel" class="abcdefgh.UserLimitsModel" cascade="all"/>
</class>
</hibernate-mapping>
所以唯一的連接是UserModel.id
= UserLimitsModel.userId
,而通道保持獨立。
嗨,問題是您沒有加入主鍵。 此外,UserModel 中的列名是 ID,而 UserLimitsModel 中的列名是 USER_ID。 您需要告訴 hibernate 如何執行連接,您可以通過在一對一元素上定義 property-ref 來做到這一點。
<one-to-one name="userLimitsModel" class="abcdefgh.UserLimitsModel" property-ref="userId" cascade="all"/>
property-ref(可選):關聯類的屬性的名稱,該類的屬性與此類的主鍵相連。 如果未指定,則使用關聯類的主鍵。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.