我已经在我的实体关系中设置了CascadeType.ALL,但是当我持有一个实体时,它部分工作。
Ex: `成员实体:
@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?
此致
萨蒂亚
答案 0 :(得分:3)
如果您使用CascadeType.ALL仅在ContactInfo中级联成员,则成员是拥有方。您必须删除mappedby,复制@JoinColumn信息并将@ManyToOne端放置为不可插入且不可更新。这将告诉hibernate在保存成员时必须更新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;