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.IdContactInfo表中没有更新,因为我在ContactInfo表中有可空的外键限制。

我该如何让JPA自动更新ContactInfo中的Member.Id并且每当我坚持会员?

问候,

萨蒂亚

+0

无论我尝试,没有什么工作。任何建议都会有很大的帮助。我使用Hibernate实现并且不使用hibernate会话进行持久化,所以希望CascadeType.ALL可以工作。 – Satya 2011-02-26 18:57:01

+0

也许您可以将您的Member.Id声明与注释一起发布,以便我们可以更好地了解您的问题?另外,请解释为什么您需要更新Id字段? Id字段是成员实体的主键吗? – bertie 2011-03-22 17:02:20

如果使用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; 

Reference Hibernate Section 2.2.5.3.1.1

+2

差不多一年后...是的,只要我找到时间,我一定会试试这个。非常感谢更新和链接:) – Satya 2012-02-06 03:55:42