Spring使用Hibernate映射到复合键

时间:2015-02-16 05:12:31

标签: hibernate

我正在尝试在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" />

0 个答案:

没有答案