这篇随笔将会记录hql的常用的查询语句,为日后查看提供便利. 在这里通过定义了三个类,Special.Classroom.Student来做测试,Special与Classroom是一对多,Classroom与Student是一对多的关系,这里仅仅贴出这三个bean的属性代码: Special类: public class Special { private int id; private String name; private String type; private Set<Classro…
java hql case when的用法 if(null == sorter){ hql.append(" order by m.mDate desc,case when m.mealTime = 'morning' then '1' when m.mealTime = 'noon' then '2' when m.mealTime = 'night' then '3' when m.mealTime = 'midnight' then '4' end "); } 注: 上面hql语…
HQL查询: 1.有关hql查询语句中的问号参数形式,如果出现有多个问号,这对后面设置参数就比较麻烦. 如:from User user where user.name=? and user.age=? and user.sex=? and ...; 对这样的语句赋值,容易出错. 可以采用宁一种命名参数方式解决它. 如: from User user where user.name=:var1 and user.age=:var2 and user.sex=:var3 and ...; quer…
关于在使用hibernate在提交事务时常遇到的异常: an assertion failure occured (this may indicate a bug in Hibernate, but is more likely due to unsafe use of the session) net.sf.hibernate.AssertionFailure: possible nonthreadsafe access to session 其实这个异常一般都是和我们在操作session f…
虽然hibernate提供了许多方法对数据库进行更新,但是这的确不能满足开发需要.现在讲解一下用hql语句对数据进行更新. 不使用参数绑定格式String hql="update User u set u.userName=123 where u.userId=2"; 介绍5种参数绑定,和为什么要使用参数绑定,好处在哪里. 一.query.setParameter(属性名,真实值,类型); String hql="update User u set u.userName=:u…
hibernate中保存一个对象后再设置此对象的属性为什么不需要调用update方法了 例如session.save(user);user.setAge(20); 原因: hibernate对象的三种状态.瞬时态(没有id,不与session关联)持久态(有id,与session关联)托管态(有id,不与session关联) User user = new User();//新建的对象是瞬时态 session.save(user);//save后,user变成持久态 user.setAge(20…
Hibernate的对象有3种状态,分别为:瞬时态(Transient). 持久态(Persistent).脱管态(Detached).处于持久态的对象也称为PO(Persistence Object),瞬时对象和脱管对象也称为VO(Value Object). 瞬时态 由new命令开辟内存空间的java对象, eg. Person person = new Person("xxx", "xx"); 如果没有变量对该对象进行引用,它将被java虚拟机…