3

エンティティ階層構造が休止状態で実装されているシナリオがあります。InheritanceType.JOINEDです

親クラス:

@Entity 
@Table(name = "LOY") 
@Inheritance(strategy=InheritanceType.JOINED)
public class Loy implements Serializable 

子クラスの境界

@Entity 
@Table(name = "LOY_BOUNDARY") 
@PrimaryKeyJoinColumn(name="ID")
public class LoyBoundary implements Serializable 

子供のクラスの割合

@Entity 
@Table(name = "LOY_PERCENTAGE") 
@PrimaryKeyJoinColumn(name="ID")
public class LoyPercentage implements Serializable 

@ManyToOneLoyエンティティクラスリンクされているCustomerエンティティクラスがあります。顧客は一度に1つのロイにのみリンクできます。

私が達成したいのは、一意のID(パスポート番号)を使用してCustomerクラスにクエリを実行し、Customerエンティティの@ManyToOneマッピングを介して特定の顧客のLoyを取得することです。

私が抱えている問題は、ロイのどのサブクラスが顧客にリンクされているかわからないことです。

  1. instanceOfに移動して特定のサブクラスを取得できますが、それを避けたいと思います。
  2. サブクラスエンティティにビジターパターンを追加することもできますが、これがベストプラクティスかどうかはわかりません。
4

1 に答える 1

1

私は訪問者と一緒に行きます。Loyの実際のタイプはサブクラスではなく、Loyクラスを拡張するHibernateプロキシであるため、が遅延ロードされinstanceofている場合、使用は機能しません。ManyToOne実際、Hibernateには、顧客のロイのIDから、それがどの種類のロイを指しているのかを知る方法がありません。

そして、訪問者はとにかくよりOOでよりクリーンです。

于 2012-09-21T07:38:52.070 に答える