今天说下Hibernate属性查询:使用HQL时候并不是把 hbm.xml 里面所有属性取出来只取出有用属性便可以了举个例子:
List list =session.createQuery
("select user.name,user.age from TUSER user").list;
Iterator it = list.iterator;
while(it.hasNext)
...{
Object results = (Object)it.next;
.out.prln(results[0]);
.out.prln(results[1]);
}
如果觉得返回方式不够符合面向对象风格也可以使用构造对象例子思路方法对进行封装:
List list = this.session.createQuery
(" select TUser(user.name,user.age) from TUser as user").list;
Iterator = list.iterator;
while(it.hasNext)
...{
TUser user = (TUser)it.next;
.out.prln(user.getName);
}
着爱和那个就比较形象化些但是有点要注意是这个查询结果TUser对象仅仅是普通 java 对象进用于对查询结果封装除了在构造是赋予属性值外其他属性均为未赋值状态这就意味着我们无法通过 Session 对此对象进行更新如果企图对 user 对象更新将导致向数据库插入条新记录而不是更新原有记录:
while(it.hasNext)
...{
TUser user = (TUser)it.next;
user.Name("test");
session.saveOrUpdate(user);
//这里将导致次 insert 操作而非 update
}
也可以使用像 SQL 那样统计比如:
selet count(*),min(user.age) from TUser as user
select upper(user.name) from TUser as user
select distinct user.name from TUser as user
以上介绍Hibernate属性查询
最新评论