2012-03-21 6 views
1

私はここにマッピングされたPersonエンティティを持っています。このエンティティ内には、JPAアノテーションでマップされたロールセット(Set roles)があります。ok ...まあ、このコマンドからQueryDSLを使用してロールのセットを取得できません:QueryDSLを使用してセット<Object>を取得するにはどうすればよいですか?

Set<Role> roles = query.from(qPerson).where(qPerson.login.eq(userName)).uniqueResult(qPessoa.roles); 

これは可能ですか?何を指示してるんですか?全てに感謝。

答えて

0

これは、JPAでサポートされていないが、あなたは、私が今ここに来た次のような形式

query.from(qPerson).innerJoin(qPerson.roles, qRole) 
    .where(qPerson.login.eq(userName)) 
    .list(qRole); 
+0

を使用することができますが、私はこの方法が優れていると思います。私は試してみるよ、ありがとう! 私はそれを持っています: オブジェクトroles = query.from(qPerson).where(qPerson.login.eq(userName))。list(qPerson.roles); if(roles!= null &&(roles instanceOf List)){ リスト rolesList =(リスト)ロール; セット rolesSet =新しいHashSet (); (ロールロール:rolesList){ rolesSet.add(role); } } など... –

+0

これは奇妙なハックのようです。なぜ結果のタイプがわからないのですか? –

+0

私はquerydslコードを見て、queryDSLがObjectのArrayListを返すことを認識しました。それから私はそのタイプのことを確信しているので、私はこのようにすることにしました。私は必要なものについては奇妙なハックを考慮しませんが、変換タイプを実行して私の問題を解決したので、素晴らしいハックです。 (私の英語には申し訳ありません) –

関連する問題