有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java集合仍然存在,但不会出现在另一侧

我在Hibernate中有一段多对多的关系。当我把一个物体和两个物体联系起来时,物体就是物体。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;
    }
}

共 (1) 个答案

  1. # 1 楼答案

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

    Note that it is the application that bears responsibility for maintaining the consistency of run- time relationships—for example, for insuring that the “one” and the “many” sides of a bidirectional relationship are consistent with one another when the application updates the relationship at runtime.