我现在经常用到Hibernate的find和query查询,这两个查询都是可以根据hql语句进行复杂查询的,可是返回值始终是list,很郁闷,比如我根据一系列条件查某个对象,load和get都是根据主键查询,如果用find和query得到的就是一个list,我明知道结果只有一条所以又new了一个对象,再让这个对象等于list.get(0),感觉这样不太好,我想有没有直接可以根据hql语句查出一条对象直接返回?
然后如果我根据hql查询一个数字:“SELECT age FROM User u where u.username=+name;”
这就是查一个数字啊,但是用query和find的话这种语句会出错吗?不出错的话还是用list接吗?
刚刚学完SSH,很多东西不懂,求指导,谢谢各位前辈了。。。。
getSession().createQuery(hql).uniqueResult();
######你试一下不就行了,把结果打印出来试试不就好知道了######谢谢你了~ 那要是光查一个字段的内容呢?比如:SELECT age FROM Student;这个是查询全体学生的age,得到的应该是个List<Integer>吗?还有SELECT age FROM student WHERE id=?;这个很显然返回一个对象的age字段内容,怎么接收啊?######
public User getAge(String name){ String hpl=“select age from User where username=?"; Query query=sessionFactory.getCurrentSession().createQuery(hql); query.setString(0,name); return (User)query.uniqueResult(); } ######uniqueResult()这个慎用,这个只会返回唯一的一条记录,而且找不到的时候会报错的。######回复 @来自爪哇岛的程序猿 : 自己试试吧,我记得找不到或者找到多个时都会报错######找不到不是返回null吗? 版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。