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)
}