我在Hibernate中有多对多的关系。当我将一个objectA与两个objectsB关联时,objectA.getObjectB()成功返回两个元素(包括数据库),但objectB.getObjectA()不返回objectA。只有在新会议开始后才能运作。
@Entity
public class ObjectA implements java.io.Serializable {
private List<ObjectB> objectsB;
...
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinTable(name = "db_objectA_objectB", joinColumns = {
@JoinColumn(name = "idObjectA", updatable = false)}, inverseJoinColumns = {
@JoinColumn(name = "idObjectB", updatable = false)})
public List<ObjectB> getObjectsB() {
return objectsB;
}
public void setObjectsB(List<ObjectB> objectsB) {
this.objectsB = objectsB;
}
}
@Entity
public class ObjectB implements java.io.Serializable {
private List<ObjectA> objectsA;
...
@ManyToMany(fetch = FetchType.EAGER, mappedBy = "objectsB", cascade = CascadeType.ALL)
public List<ObjectA> getObjectsA() {
return objectsA;
}
public void setObjectsA(List<ObjectA> objectsA) {
this.objectsA= objectsA;
}
}
答案 0 :(得分:1)
保持关系的双方一致是应用程序代码的责任,而不是Hibernate的责任。在JPA 2.0规范中,用以下词语告知:
请注意,应用程序负责 保持运行时关系的一致性 - 例如, 确保双向的“一”和“多”两面 申请时,关系是彼此一致的 在运行时更新关系。