2011-08-12 29 views
0

私は、外部または内部型へのリンクであるTransactionLogの既存のテーブルを持っています。現金調整&ゲームトランザクションに対応するIDのは、シングルという列トランザクションIDと呼ばれる別の列に格納されているタイプ iは、テーブルにはそれがあるため、既存のテーブルの性質の単一テーブルの継承クエリ

にリンクされているかを示します単一テーブル継承の中にマッピングされた:

@Inheritance(strategy = InheritanceType.SINGLE_TABLE) 
@DiscriminatorColumn(name = "TYPE", discriminatorType = DiscriminatorType.INTEGER) 
public class TransLog implements Serializable { 
    @Id 
    @GeneratedValue 
    private Long id; 
    private Integer type; 
// getters and setters 
} 


@Entity 
public class InternalAdjustmentTransLog extends TransLog { 
    @ManyToOne 
    @JoinColumn(name = "TransID", nullable = false) 
    private InternalAdjustmentRecord internalAdjustmentRecord; 
    // getters and setters 
} 

@Entity 
public class ExternalTransLog extends TransLog { 
    @ManyToOne 
    @JoinColumn(name = "TransID", nullable = false) 
    private ExternalAdjustmentRecord externalAdjustmentRecord; 
} 

これら2つのサブクラスの各々が定義descriminator値とそのサブクラスを有する..

上記の設定で、tはここでは、 の内部レコードと外部レコードの統一データを取得する必要がある場合があります。これを達成する最良の方法は何ですか?最初は私はそれがクエリのルートクラス(私はjpaの基準を使用しています)としてTransLogを使用するだけで十分だろうと思った。しかし、私はTransId(サブクラスで定義され、関係のない2つの異なるオブジェクトを指し示す)を取得する必要があります。

ありがとうございました。

答えて

0

必要なものを返し、両方のサブクラスで実装する抽象メソッドをTransLogで作成できます。

+0

私はTransLogでgetTransactionIdメソッドを作成しようとしましたが、両方のサブクラスでlazy init(外部または内部のIDを取得)として実装されましたが、java.lang.IllegalArgumentExceptionが発生します。 [transactionId]をパスに対して.. – geneqew

関連する問題