【发布时间】:2014-11-07 12:48:43
【问题描述】:
模型是一个user可以有多个LoginSessions(LogginSession只能关联一个用户)。
我想要实现的是为用户带来相关的 LoginSession(这是查询中提供的令牌)。
我试图只用一个查询来完成所有这些工作,为此我想使用急切加载,这是我的代码:
我有这个代码:
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 个查询(请参阅提供的代码中的 cmets)。
我的 Criteria 做错了什么?如何才能成为一个单一的查询?
谢谢
【问题讨论】:
标签: java sql hibernate orm hibernate-criteria