2009-06-25 8 views
2

私は、そのパラメータの1つとしてリストを持つ動的インスタンス化を使用して、hqlクエリを作成したいと考えています。コレクションを使ったHibernate動的インスタンス化は可能ですか?

簡体例:

ダイナミックインスタンス化と

A HQLクエリー:

select new x.y.UserDto(u.name, u.contacts) from User u where u.xyz=:param1 ... 

と私のDTOクラスのコンストラクタは次のとおりです。

public class UserDto { 
    private String name; 
    private List contacts; 

    public UserDto(String name, List contacts) { 
     this.name = name; 
     this.contacts = contacts; 
    } 
    ... 
} 

とエンティティのマッピング:

public class User { 
    @olumn(name="NAME") 
    String name; 

    @ManyToMany(targetEntity= Contacts.class, fetch = FetchType.EAGER) 
    @JoinTable(name="USER_DEPARTMENT_CONTACTS", 
      [email protected](name="DEPARTMENT_ID"), 
      [email protected](name="USER_ID")) 
    private List<Contacts> contacts; 

    ...  
} 

私が望むのは、エンティティのいくつかのプロパティとコレクションを持つ新しいオブジェクトを作成することだけです。

これは、各エンティティに対して複数の結果行を生成するため、これを達成するためにHibernateが1つ以上のクエリを必要とすることが理解できます。

プロパティとコレクションの組み合わせである新しいオブジェクトを作成できるかどうかは知りませんか?

答えて

3

申し訳ありませんが、できません。 NOT COLLECTION - - 、 結果のJPA仕様、クエリのSELECT句は ENTITY抽象スキーマ・タイプ、 状態フィールドタイプである によって指定されたクエリ結果の

種類に応じて集計機能 操作の結果、またはこれらの一部のシーケンス。

select DISTINCT new x.y.UserDto(u) from User u LEFT JOIN FETCH u.contacts 

だから、あなたはあなたの連絡先を持つユーザーが

をフェッチしているだろう、このように:あなたは代わりに以下を使用することができ

関連する問題