对于Hibernate条件的设置投影,结果为空

时间:2013-08-26 07:22:53

标签: java sql hibernate

我有一个连接查询,我想把它作为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();

这一行有什么问题?

1 个答案:

答案 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