Hibernate Query对象



Hibernate  Query对象

可以透过org.hibernate.Query介面的实例来进行查询,透过Query介面,您可以先设定查询参数,之后透过setXXX()等方法,将指定的参数值填入,而不用每次都撰写完整的HQL,直接来看个例子:

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();

在设定参数值时,必须依照 ? 所设定的顺序,并使用对应型态的setXXX()方法,一个执行的例子如下:

Hibernate: select user0_.name as col_0_0_ from user user0_ where user0_.age>? momor caterpillar bush

您可以使用命名参数(Named Parameter)来取代这个方法,这可以不用依照特定的顺序来设定参数值,并拥有较好的可读性,直接来看个例子:

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()方法中直接指定参数名来设定参数值,而不用依照特定的顺序。