0

我在 Hibernate 中有一个多对多的关系。当我将一个objectA 与两个objectB 关联时,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;
    }
}
4

1 回答 1

1

保持关系的双方一致是应用程序代码的责任,而不是 Hibernate 的责任。在 JPA 2.0 规范中,这是用以下词语来说明的:

请注意,应用程序负责维护运行时关系的一致性——例如,当应用程序更新关系时,确保双向关系的“单”和“多”边彼此一致在运行时。

于 2013-07-15T19:44:06.623 回答