我正在尝试在hibernate中合并用户Object。它会抛出以下错误
userid 不能为空。
此处 userId 和 widgetId 是复合键。 我可以保存并获取相同的对象。 但不能合并。
public class User extends BaseModel {
private Long _userId;
private String _name;
private UserOTPMobile _userOTPMobile;
private List<UserWidgetPreference> widgetPreference;
这里userWidgetPreference包含以下
public class UserWidgetPreference extends BaseModel {
private UserWidgetPreferenceId id = new UserWidgetPreferenceId();
private String position;
用户widgetpreferenceId comtains
public class UserWidgetPreferenceId extends BaseModel {
private User user;
private Widget widget;
用户映射
<bag name="widgetPreference" cascade="all-delete-orphan" lazy="false">
<key>
<column name="USER_ID"/>
</key>
<one-to-many class="com.zirius.zerp.core.dao.model.UserWidgetPreference"/>
</bag>
UserWidgetPreference映射
<hibernate-mapping>
<class name="com.zirius.zerp.core.dao.model.UserWidgetPreference" table="USER_WIDGET_PREFERENCE" >
<composite-id name="id" class="com.zirius.zerp.core.dao.model.UserWidgetPreferenceId">
<key-many-to-one name="user" class="com.zirius.zerp.core.dao.model.User" column="USER_ID"/>
<!-- <key-property name="user" type="long" column="USER_ID" /> -->
<key-many-to-one name="widget" class="com.zirius.zerp.core.dao.model.Widget" column="WIDGET_ID" lazy="false" />
</composite-id>
<property name="position" type="string" column="POSITION" />