2017-10-03 17 views
0

私はDBと2つのエンティティに2つのテーブルを持っています。 HtmlDescおよびHtmlData。Hibernate。 2つのエンティティを1つにマップする方法は?

どちらも同じIDです。 この2つのエンティティからのコードを繰り返さずに、Hibernateでcompund/mergedエンティティを作成する方法はありますか? 私は新しいエンティティのHTML = HtmlDesc + HtmlDataにマップするなステートメント

Query<Html> query = getCurrentSession().createNativeQuery(
      "SELECT * FROM HtmlDesc A, HtmlData B WHERE A.linkId = B.linkId", 
      Html.class); 
return query.getResultList(); 

を実行したいです。 このようなエンティティを書くスマートコードはありますか?

は、その後私は、誰かが同様の問題を持っている場合は役に立つことができ、関連するトピックを見つけました: JPA- Joining two tables in non-entity class

答えて

1

あなたの質問の私の理解が正しい@SqlResultSetMappingは、あなたが探しているものである場合。

これは、エンティティ・マネージャがあなたのケース

List<Object[]> results = em.createNativeQuery("select * from html h JOIN htmla ha ON h.id=ha.id","HtmlaHtmlbMapping").getResultList(); 

@SqlResultSetMapping(
    name="HtmlaHtmlbMapping", 
    entities = { 
      @EntityResult(
        entityClass = HTML.class, 
        fields = { 
          @FieldResult(name="id",column = "id"), 
          @FieldResult(name = "detail", column = "detail")}), 
      @EntityResult(
        entityClass = HTMLA.class, 
        fields = { 
          @FieldResult(name="id",column = "id"), 
          @FieldResult(name = "name", column = "name")})}) 
ための一例として、特定のエンティティ

にオブジェクトのリストをマッピングすることができるようになりますカスタムマッピングを提供します

関連する問題