在我的应用程序中,我有3个实体。 Z,A和B.
Z - > A是OneToMany,Z是A的父。 A - > B是OneToOne,A是B的父母。
技术上可行吗?一个实体可以同时成为一个孩子和父母吗?
实体Z:
@Entity
@Table(name = "Z")
public class Z {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "z")
private Set<B> bSet;
实体A:
@Entity
@Table(name = "A")
public class A {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@ManyToOne
@JoinColumn(name = "z_id")
private Z z;
@OneToOne(cascade = CascadeType.ALL, mappedBy = "a")
private B b;
实体B:
@Entity
public class B{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@OneToOne
@JoinColumn(name = "a_ID")
private A a;
答案 0 :(得分:0)
您的代码中看起来有一个错误,即您对Z-&gt; B有一对多的关系。
@OneToMany(cascade = CascadeType.ALL, mappedBy = "z")
private Set<B> bSet;
应该是
@OneToMany(cascade = CascadeType.ALL, mappedBy = "z")
private Set<A> aSet;
尽管如此,这还不能完全回答你的问题。父子关系是继承的一部分,但这些类之间没有继承。
@Entity
@Table(name = "A")
public class A extends Z {
需要扩展Z类。
类A将接收所有类Z的属性,这是继承的本质。 正如你所看到的,这已经打破了我们的继承,因为类Z有一个对A的引用。理想情况下,你不应该在这种情况下扩展Z并忘记Z是A的父。
如此简短的回答,从技术上说这是不可能的。