hibernate綁定參數類型
(1)使用 ? 指定參數
...
Query query = session.createQuery("from Student s where
s.age > ? and s.name like ? ");
query.setInteger(0,18);
query.setString(1,"%abc%");
...
(2)使用 : 后跟變量的方法設置參數
...
Query query = session.createQuery("from Student s where
s.age > :minAge and s.name like :likeName ");
query.setInteger("minAge",18);
query.setString("likeName","%ABC%");
...
(3)setEntity()方法
setEntity()方法把參數與一個持久類的實例綁定,例如下面的示例
...
Team team = (Team)session.get(Team.class,"5f45saf45sdf456f");
Query query = session.createQuery("from Student s where s.team = :team");
query.setEntity("team",team); //設置參數為team實例
...
注:上述的team對象可以是持久對象也可以是脫管對象
(4)setParameter()方法
setParameter()方法的全稱是setParameter(String paraName,實例,實例類型),這個方法
可以綁定任何類型的參數.其中第三個參數可以省略,hibernate要以根據實例推斷出絕大部分
對應的映射類型.
下面將(3)中的代碼做一下改動
query.setParameter("team",team,Hibernate.entity(Team.class)).
或者query.setparameter("team",team).
(5)setPorperties()方法
該方法的全稱是setProperties(類實例).它將類實例的屬性名與參數值相對應
...
Student student = new Student();
student.setAge("18");
Query query = sesion.createQuery("from Student s where s.age = :age");
query.setProperties(student); //設置參數為student對象
...
注意:HQL語句中的變量age必須和student的屬性age同名,否則會出錯.