2012-03-21 3 views
1

여기에 엔티티 엔티티가 매핑되어 있습니다.이 엔티티 안에는 JPA 어노테이션으로 매핑 된 역할 세트 (설정 역할)가 있습니다.이 글에서 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

를 사용할 수 있지만이 방법이 더 낫다고 생각합니다. 나는 시험해 볼 것이다, 고마워! 알겠습니다. 개체 역할 = query.from (qPerson) .where (qPerson.login.eq (userName)). list (qPerson.roles); if (roles! = null && (roles instanceOf List)) { 목록 rolesList = (목록 ) 역할; 세트 rolesSet = 새 HashSet (); (역할 역할 : 역할 목록) { rolesSet.add (역할); } } 등등 ... –

+0

이상한 해킹처럼 보입니다. 결과의 유형을 확신 할 수없는 이유는 무엇입니까? –

+0

나는 querydsl 코드를 살펴본 후 queryDSL이 Object의 ArrayList를 반환한다는 사실을 깨닫고 나중에 변환했다. 그런 다음 유형에 대해 확신 할 때이 방법으로 결정했습니다. 나는 필요한 것을 위해 이상한 해킹을 고려하지 않고, 단지 해킹 유형을 수행하고 내 문제를 해결했기 때문에 훌륭한 해킹을 고려합니다. (내 영어로는 유감이다.) –

관련 문제