모델은 user
이 LoginSessions
(LogginSession은 단 한 명의 사용자와 관련 될 수 있음)을 많이 가질 수 있다는 것입니다.
내가 달성하려고하는 것은 관련 LoginSession (쿼리에서 제공되는 토큰)을 사용자에게 가져 오는 것입니다.쿼리로 Hibernate eager 로딩
LoginSession loginSession = new LoginSession();
loginSession.setToken(sessionToken);
//Example loginSessionExample = Example.create(loginSession);
Criteria crit = session.createCriteria(User.class);
crit.createAlias("userLoginSession", "session");
crit.add(Restrictions.eq("session.token", sessionToken));
crit.setMaxResults(1);
crit.setFirstResult(0);
crit.setFetchMode("loginSession", FetchMode.JOIN);
List<?> usersList = (List<?>) crit.list(); // first query
if(usersList.size() == 1)
{
User user = (User) usersList.get(0);
LoginSession loginSession = (LoginSession) user.getUserLoginSession().toArray()[0]; //second query
...
문제가 있다는 것입니다 :이 코드가
: 나는 단지 하나 개의 쿼리와 함께 할 노력하고, 나는 열망로드를 사용하려면 그렇게 그 모든 여기 내 코드입니다 실행중인 2 개의 quires가 있습니다 (제공된 코드의 주석 참조).
내가 기준을 잘못 지정하면 어떻게 하나의 검색어가 될 수 있습니까?
감사