Я не могу заставить его работать. Ошибка говорит Broken column mapping
. Это должно быть одностороннее однозначное сопоставление. Только 1 часть составного идентификатора связана с другим объектом. Канал будет вставлен на основе канала доступа зарегистрированного пользователя. У меня есть 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 hibernate .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
, в то время как канал остается отдельным.