5

私は2つのエンティティを持っています:

@Entity
@Table(name="TableA")
public class TableA {
     @Id
     @Column(name="id")
     long id;

     @Column(name="tableB_id")
     long tbId;

     @Column(name="column1", table="TableB")
     String tbColumn1; 
}

@Entity
@Table(name="TableB")
public class TableB {
     @Id
     @Column(name="id")
     long id;

     @Column(name="column1")
     String column1; 
}

TableA には、TableB.id への外部キー 'tbId' があります。そして、TableB には「column1」という名前の列があり、何らかの結合によって TableA エンティティの「column1」を取得したいと考えています。JPAに関してはどうすればいいですか?これは、TableB エンティティ全体を TableA に配線したくないため、OneToOne ではありません。

4

1 に答える 1

10

データを読み取るためだけに 1 つのオブジェクト内で列をグループ化する場合は、次の 2 つの方法をお勧めします。

  1. DB VIEW を作成し、Entity としてマッピングします。
  2. Result Classes Constructor Expressionを使用して、結果クエリの戻り値に基づいて、提供されたクラスのオブジェクトをインスタンス化し、入力します。

結果クラス コンストラクター式の ObjectDB から:

JPA は、JPQL クエリ結果をカスタム結果クラスのインスタンスでラップすることをサポートしています。これは主に、カスタム結果オブジェクトが Object[] 要素として結果を表すオブジェクト指向の代替手段を提供できる、複数の SELECT 式を持つクエリに役立ちます。

于 2012-07-04T12:10:39.547 に答える