Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用父级中的复合id创建双向一对多关系?_Java_Jpa_Persistence - Fatal编程技术网

Java 如何使用父级中的复合id创建双向一对多关系?

Java 如何使用父级中的复合id创建双向一对多关系?,java,jpa,persistence,Java,Jpa,Persistence,如何更新以下类以使父对象和子对象之间的一对多关系正常工作 家长: @Entity public class Parent { @Embeddedid private ParentId id; @OneToMany private List<Child> children; public Parent() { } public Parent(final ParentId id) { this.id = id

如何更新以下类以使父对象和子对象之间的一对多关系正常工作

家长:

@Entity
public class Parent {

    @Embeddedid
    private ParentId id;

    @OneToMany
    private List<Child> children;

    public Parent() {
    }

    public Parent(final ParentId id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return "Parent [id=" + this.id + ", children=" + this.children + "]";
    }

    // (Getters and setters)
}
@Entity
public class Parent {

    @Embeddedid
    private ParentId id;

    /*******************************************************/
    /*******************************************************/
    /*******************************************************/
    // @formatter:off
    @OneToMany(
        cascade = { CascadeType.MERGE, CascadeType.PERSIST },
        fetch = FetchType.EAGER
    )
    @JoinColumns(
        {
            @JoinColumn(name = "parent_key1"),
            @JoinColumn(name = "parent_key2")
        }
    )
    // @formatter:on
    /*******************************************************/
    /*******************************************************/
    /*******************************************************/
    private List<Child> children;

    public Parent() {
    }

    public Parent(final ParentId id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return "Parent [id=" + this.id + ", children=" + this.children + "]";
    }

    // (Getters and setters)
}
儿童:

@Entity
public class Child {

    private Integer id;

    @ManyToOne
    private Parent parent;

    public Child() {
    }

    public Child(final Integer id, final Parent parent) {
        this.id = id;
        this.parent = parent;
    }

    @Override
    public String toString() {
        return "Child [id=" + this.id + ", parent.getId()=" + this.parent.getId() + "]";
    }

    // (Getters and setters)
}
@Entity
public class Child {

    private Integer id;

    @ManyToOne
    /*******************************************************************************/
    /*******************************************************************************/
    /*******************************************************************************/
    // @formatter:off
    @JoinColumns(
        {
            @JoinColumn(name = "parent_key1", insertable = false, updatable = false),
            @JoinColumn(name = "parent_key2", insertable = false, updatable = false)
        }
    )
    // @formatter:on
    /*******************************************************************************/
    /*******************************************************************************/
    /*******************************************************************************/
    private Parent parent;

    public Child() {
    }

    public Child(final Integer id, final Parent parent) {
        this.id = id;
        this.parent = parent;
    }

    @Override
    public String toString() {
        return "Child [id=" + this.id + ", parent.getId()=" + this.parent.getId() + "]";
    }

    // (Getters and setters)
}
因为我们在当前项目中对此问题进行了一些讨论,所以我将发布我们的解决方案,作为对这个问题的回答。

家长:

@Entity
public class Parent {

    @Embeddedid
    private ParentId id;

    @OneToMany
    private List<Child> children;

    public Parent() {
    }

    public Parent(final ParentId id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return "Parent [id=" + this.id + ", children=" + this.children + "]";
    }

    // (Getters and setters)
}
@Entity
public class Parent {

    @Embeddedid
    private ParentId id;

    /*******************************************************/
    /*******************************************************/
    /*******************************************************/
    // @formatter:off
    @OneToMany(
        cascade = { CascadeType.MERGE, CascadeType.PERSIST },
        fetch = FetchType.EAGER
    )
    @JoinColumns(
        {
            @JoinColumn(name = "parent_key1"),
            @JoinColumn(name = "parent_key2")
        }
    )
    // @formatter:on
    /*******************************************************/
    /*******************************************************/
    /*******************************************************/
    private List<Child> children;

    public Parent() {
    }

    public Parent(final ParentId id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return "Parent [id=" + this.id + ", children=" + this.children + "]";
    }

    // (Getters and setters)
}