Session session = sessionFactory.openSession(); Query query = session.createQuery("select user.name from User as user where user.age > ?"); query.setInteger(0, 25); List names = query.list(); Iterator iterator = names.iterator(); while(iterator.hasNext()) { System.out.println(iterator.next()); } session.close();
Hibernate: select user0_.name as col_0_0_ from user user0_ where user0_.age>? momor caterpillar bush |
Session session = sessionFactory.openSession(); Query query = session.createQuery("select user.name from User as user where user.age > :minAge"); query.setInteger("minAge", 25); List names = query.list(); Iterator iterator = names.iterator(); while(iterator.hasNext()) { System.out.println(iterator.next()); } session.close();设定命名参数时,在建立Query时先使用:后跟着参数名,之后就可以在setXXX()方法中直接指定参数名来设定参数值,而不用依照特定的顺序。
<?xml version="1.0" encoding="utf-8"?><query>的name属性用来设定查询外部HQL时的名称依据,使用的例子如下:
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="onlyfun.caterpillar.User" table="user">
<id name="id" column="id" type="java.lang.Integer">
<generator class="native"/>
</id>
<property name="name" column="name" type="java.lang.String"/>
<property name="age" column="age" type="java.lang.Integer"/>
</class>
<query name="onlyfun.caterpillar.QueryUser">
<![CDATA[
select user.name from User as user where user.age > :minAge
]]>
</query>
</hibernate-mapping>
Session session = sessionFactory.openSession(); Query query = session.getNamedQuery("onlyfun.caterpillar.QueryUser"); query.setInteger("minAge", 25); List names = query.list(); Iterator iterator = names.iterator(); while(iterator.hasNext()) { System.out.println(iterator.next()); } session.close();