我有一个连接查询,我想把它作为hibernate标准放在我的程序中。
select a.accountName,a.username,b.name from Account as a , User as b
where a.id=b.accountId and b.name like '%abc%' and a.username like '%def%'
我的标准就像:
Criteria userCriteria = session.createCriteria(User.class);
DetachedCriteria accountCriteria = DetachedCriteria.forClass(Account.class);
accountCriteria .add(Restrictions.like("name", "%" + def+ "%"));
accountCriteria.setProjection(Projections.property("id"));
userCriteria.add(Property.forName("accountId").in(accountCriteria));
userCriteria.add(Restrictions.eq("username", "%" + abc+ "%"));
List tmpList = userCriteria.setProjection(Projections.rowCount()).list();
userCriteria.setMaxResults(pageSize);
result = userCriteria.list();
列表tmpList显示为空。我可以在之前列出所有数据:
List tmpList = userCriteria.setProjection(Projections.rowCount()).list();
这一行有什么问题?
答案 0 :(得分:0)
在查询中的where子句中,您向我们展示了您写的:
b.name like '%abc%'
a.username like '%def%'
但是在你的写作代码中:
Restrictions.like("name", "%" + def+ "%")
Restrictions.eq("username", "%" + abc+ "%")
如果我没错,这会产生这样的地方:
a.name like '%def%'
b.username == '%abc%'
Sarajog