日期:2014-05-18  浏览次数:20618 次

Hibernate 查询语句的问题
Integer total = Integer.parseInt(hibernateTemplate.find("select count(*) from Material m inner join fetch m.material_supplier s where 1=1").listIterator().next().toString());
报hibernate语句错误,这个语句该怎么写呢?
where后面是要加 m表和s表的筛选条件的。
------解决方案--------------------
哥们你也报错误打赢出来啊!这样 别人怎么回答你!
------解决方案--------------------
要用hql语句?
------解决方案--------------------
hql里面不能用*,你把count(*)改成count(1)就可以了
------解决方案--------------------
Material m inner join fetch m.material_supplier  
1、hql不需要join  Class中的属性就可以where 1-1  and m.material_supplier .id=xxx
------解决方案--------------------
你这语句明明sql语句。放在hql里面 肯定报错。
------解决方案--------------------
你这个Material 类里面有material_supplier这个属性吗
------解决方案--------------------
from 后面貌似是不能用子查询和联合查询的。
------解决方案--------------------
hql=" from Material where 1=1 "

public int getCountByHql(String hql) {
try {
String countHql = "select count(*) " + hql;
int count = ((Long) getHibernateTemplate().find(countHql).get(0))
.intValue();
return count;
} catch (RuntimeException ex) {
log.error("find by getCountByHql", ex);
throw ex;
}
}
我是这样查询的