Cascade Type.ALL不工作
问题描述:
我已经在我的实体关系中设置了CascadeType.ALL,但它在我坚持一个实体时部分工作。Cascade Type.ALL不工作
例: `会员单位:
@OneToMany(mappedBy="member", cascade={CascadeType.ALL})
private List<ContactInfo> contactInfos;
和的ContactInfo实体:
@ManyToOne
@JoinColumn(name="MEMBERID")
private Member member;
`
Member
细节也ContactInfo
数据持久化。但是Member.Id
在ContactInfo
表中没有更新,因为我在ContactInfo
表中有可空的外键限制。
我该如何让JPA自动更新ContactInfo中的Member.Id并且每当我坚持会员?
问候,
萨蒂亚
答
如果使用CascadeType.ALL只级联中的ContactInfo的成员,那么该成员是拥有方。您必须删除mappedby,复制@JoinColumn信息并将@ManyToOne端视为不可插入和不可更新。这会告诉休眠时,保存MEMBER时必须更新CONTACTINFO的MEMBERID。
这里是映射:
会员单位:
@OneToMany
@JoinColumn(name="MEMBERID") //we need to duplicate the physical information
private List<ContactInfo> contactInfos;
联系单位:
@ManyToOne
@JoinColumn(name="MEMBERID", insertable=false, updatable=false)
private Member member;
+2
差不多一年后...是的,只要我找到时间,我一定会试试这个。非常感谢更新和链接:) – Satya 2012-02-06 03:55:42
无论我尝试,没有什么工作。任何建议都会有很大的帮助。我使用Hibernate实现并且不使用hibernate会话进行持久化,所以希望CascadeType.ALL可以工作。 – Satya 2011-02-26 18:57:01
也许您可以将您的Member.Id声明与注释一起发布,以便我们可以更好地了解您的问题?另外,请解释为什么您需要更新Id字段? Id字段是成员实体的主键吗? – bertie 2011-03-22 17:02:20