子查询 select new PersonInfo(v.id,v.name,count(v.id)) from Person v group by v.id,v.name 查出来一个temp,temp是什么呢,temp是一个具有(v.id,v.name,count(v.id)) 属性的对象,但他不是Person v ,换一句话说这个temp在Hibernate中没有bean-mapping定义,没有定义的东西,Hibernate也不知道怎么办了
select count(*) from( select new PersonInfo(v.id,v.name,count(v.id)) from Person v group by v.id,v.name --这里分装在对象里面了啊,是一个java的对象啊 ) temp --外面from 这个对象、、、、、
hql和sql搞的太混乱了、、、、、
hql语句的from不支持子查询,where则支持! 例如: select a from A a,(select b from B b,C c where b.id=c.id) d where a.id=d.id; 改为 select a from A a where a.id in (select b.id from B b,C c where b.id=c.id);
老师说用HQL的时候心中要默念 查的是对象 是对象 对象所以没有count(*)你的语句可以写成:hql : select new PersonInfo(v.id,v.name) from Person v Query query = session.createQuery(hql); int size = query.list().size();//条数 PS: PersonInfo 必须有一个 带两个参数的构造器: PersonInfo(String id,String name){ }
子查询
select new PersonInfo(v.id,v.name,count(v.id)) from Person v group by v.id,v.name
查出来一个temp,temp是什么呢,temp是一个具有(v.id,v.name,count(v.id)) 属性的对象,但他不是Person v ,换一句话说这个temp在Hibernate中没有bean-mapping定义,没有定义的东西,Hibernate也不知道怎么办了
select new PersonInfo(v.id,v.name,count(v.id)) from Person v group by v.id,v.name
--这里分装在对象里面了啊,是一个java的对象啊
) temp
--外面from 这个对象、、、、、
例如:
select a from A a,(select b from B b,C c where b.id=c.id) d where a.id=d.id;
改为
select a from A a where a.id in (select b.id from B b,C c where b.id=c.id);
Query query = session.createQuery(hql);
int size = query.list().size();//条数
PS:
PersonInfo 必须有一个 带两个参数的构造器:
PersonInfo(String id,String name){
}