我遇到了非常奇怪的情况。我得到A类和B类以及关系ManyToMany,如下所示:
A.class:
@ManyToMany
@JoinTable(name="a_b",
joinColumns={
@JoinColumn(name="a_id")
}, inverseJoinColumns={
@JoinColumn(name="b_id")
}
)
private List<B> blist;B.class:
@ManyToMany
@JoinTable(name="a_b",
joinColumns={
@JoinColumn(name="b_id")
}, inverseJoinColumns={
@JoinColumn(name="a_id")
}
)
private List<A> alist;当我更新A类的实例时,Hibernate删除了我数据库中的所有关系('delete from a_b where a_id=?),我没有得到级联类型的规则。
发布于 2011-11-09 08:32:48
我唯一能想到的就是你使用的是保存,而不是SaveOrUpdate。真的是这样吗?类注释看起来很好,还有一些其他原因导致了这个问题。你能发布更多的信息吗?
发布于 2011-11-09 08:50:02
我认为问题在于您没有指定级联类型。缺省值为CascadeType.None,因此父ID已更改的更新不会传播给子ID,因此Hibernate将删除孤立ID。我相信你需要在你的属性中指定以下内容:
@ManyToMany(cascade = CascadeType.ALL) //Use whatever CascadeType fits your need发布于 2011-11-09 09:55:17
尝试使用以下映射
A.class
@ManyToMany(targetEntity = B.class)
@JoinTable(name = "a_b",
joinColumns = @JoinColumn(name = "a_id"),
inverseJoinColumns = @JoinColumn(name = "b_id"))
private List<B> blist;B.class
@ManyToMany(mappedBy = "blist", targetEntity = A.class)
private List<A> alist;https://stackoverflow.com/questions/8058888
复制相似问题