2017-10-17 5 views
0

私のアプリケーションには3つのエンティティがあります。 Z、AとBHibernateは子クラスを同時に親にすることができます

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

が見えます関係をZ-> Bとする。 @OneToMany(cascade = CascadeType.ALL, mappedBy = "z") private Set<B> bSet;

はまだ

@OneToMany(cascade = CascadeType.ALL, mappedBy = "z") private Set<A> aSet;

でなければならず、これは完全にあなたの質問に答えていません。親子関係は継承の一部ですが、これらのクラス間に継承はありません。

  1. Zは、継承の性質があるように、クラスZのすべてのプロパティを受信するクラスZ.に

    クラスAを拡張する

@Entity @Table(name = "A") public class A extends Z {ニーズA.の親です。 クラスZにはAへの参照が含まれているので、これは既にわかっています。この場合はZを拡張してAの親であることを忘れてください。

ですから、技術的にはこれは不可能です。

関連する問題