Java 收集持续存在,但不';t出现在另一边
我在Hibernate中有一个多对多关系。当我将一个objectA与两个objectsB关联时,objectA.getObjectB()成功返回两个元素(包括数据库),但objectB.getObjectA()不返回objectA。只有在新的课程开始后才有效Java 收集持续存在,但不';t出现在另一边,java,hibernate,many-to-many,Java,Hibernate,Many To Many,我在Hibernate中有一个多对多关系。当我将一个objectA与两个objectsB关联时,objectA.getObjectB()成功返回两个元素(包括数据库),但objectB.getObjectA()不返回objectA。只有在新的课程开始后才有效 @Entity public class ObjectA implements java.io.Serializable { private List<ObjectB> objectsB; ...
@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;
}
}
@实体
公共类ObjectA实现java.io.Serializable{
私人名单对象b;
...
@ManyToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
@JoinTable(name=“db\u objectA\u objectB”,joinColumns={
@JoinColumn(name=“IDObject”,updateable=false)},inverseJoinColumns={
@JoinColumn(name=“idObjectB”,updateable=false)})
公共列表getObjectsB(){
将反对意见退回给某人;
}
public void setObjectsB(列出objectsB){
this.objectsB=objectsB;
}
}
@实体
公共类ObjectB实现java.io.Serializable{
私人名单对象a;
...
@ManyToMany(fetch=FetchType.EAGER,mappedBy=“objectsB”,cascade=CascadeType.ALL)
公共列表getObjectsA(){
返回对象a;
}
公共无效setObjectsA(列表objectsA){
this.objectsA=objectsA;
}
}
保持关系双方的一致性是应用程序代码的责任,而不是Hibernate的责任。在JPA 2.0规范中,这是通过以下文字来说明的:
请注意,应用程序负责
维护运行时关系的一致性,例如,
确保一个系统的“一”面和“多”面是双向的
当应用程序
在运行时更新关系
这可能是hibernate的行为。它不会同时填充实体关系的两个方向,只填充您查询它的一个方向,它会抛出任何异常吗?还是返回空值?