0

2 つの可能なテーブルからエンティティのフィールドを取得することは可能ですか?

例えば:

   @Entity
   @Table(name = "TABLE_A")
   public class A{

     @Id
     @Column(name = "ID")
     @GeneratedValue(strategy = GenerationType.AUTO)
     private Long id;
   }

   @Entity
   @Table(name = "TABLE_B")
   public class B{

     @Id
     @Column(name = "ID")
     @GeneratedValue(strategy = GenerationType.AUTO)
     private Long id;
   }

@Entity
@Table(name = "TABLE_PARENT")
public class PARENT{

  // This field needs to be fetched from A table or from B table!!! by some
  // conditions
  @OneToOne
  @JoinColumn(name = "A_B_ID")
  private A a;                     
}

親クラスのフィールドは、何らかの条件に従って table_A または table_b から取得する必要があります!

どんなアイデアでも大歓迎です!

明確化: 親が実際に B インスタンスを指している場合、B のインスタンスを取得したくありません! クラス継承ごとのテーブルは、親クラスでフィールドが A 型であると指定したため、A のテーブルのみを検索します!?

他のアイデアはありますか?

4

2 に答える 2

1

これは、休止状態の継承機能を使用して実現できます。これが例です。 http://viralpatel.net/blogs/hibernate-inheritance-table-per-concrete-class-annotation-xml-mapping/

于 2012-07-25T11:39:36.450 に答える
1

1 つの解決策は、継承AB、共通クラスから、たとえば、クラス内Cで参照CすることParentです。ドラフトは次のようになります。

@MappedSuperclass
public class AB {
    @Id
    private Integer id;
...
}

@Entity
public class A extends AB {
...
}

@Entity
public class B extends AB {
...
}

@Entity
public class Parent {
    ...
    @Id
    private Integer id;
    @OneToOne
    private AB ab;
}

ドキュメント セクション 2.2.4.1

于 2012-07-25T11:40:14.953 に答える