SELECT * FROM user WHERE age > 20则您可以如下建立SQL查询:
// SQL,并指定别名为userString sql = "select {user.*} from User user where user.age > 20";
Session session = sessionFactory.openSession();
// 建立 SQLQuery
SQLQuery sqlQuery = session.createSQLQuery(sql);
// 将别名user与实体类User关联在一起
sqlQuery.addEntity("user", User.class);
Iterator iterator = sqlQuery.list().iterator();
while(iterator.hasNext()) {
    User user = (User) iterator.next();
    System.out.println(user.getAge() + "\t" + user.getName());
}
        
session.close(); 
    addEntity()是将实体类别与别名连结在一起的方法,大括号指定要查询的数据,Hibernate根据所给定的SQL自动生成以下的句子:select user.id as id0_, user.name as name0_0_, user.age as age0_0_ from User user where user.age > 20返回的结果则由Hibernate进行封装为所指定别名关联之实体类,如此您可以得到使用SQL的弹性,但无需处理繁琐的ResultSet。
<?xml version="1.0" encoding="utf-8"?> </hibernate-mapping>定义的时候,使用<return>卷标指定别名与实体类之关联,配合映像文件中的定义,您可以如下运行Hibernate:
Session session = sessionFactory.openSession();
Query query = session.getNamedQuery("onlyfun.caterpillar.QueryUser");
        
Iterator iterator = query.list().iterator();
while(iterator.hasNext()) {
    User user = (User) iterator.next();
    System.out.println(user.getAge() + "\t" + user.getName());
}
        
session.close();
    也可以设定查询参数,例如:....
<sql-query name="onlyfun.caterpillar.QueryUser">
<![CDATA[
select {user.*} from User user where user.age > :age
]]>
<return alias="user" class="onlyfun.caterpillar.User"/>
</sql-query>
....
    使用Hibernate查询时如下:Session session = sessionFactory.openSession();
Query query = session.getNamedQuery("onlyfun.caterpillar.QueryUser");
query.setInteger("age", 20);
Iterator iterator = query.list().iterator();
while(iterator.hasNext()) {
    User user = (User) iterator.next();
    System.out.println(user.getAge() + "\t" + user.getName());
}
        
session.close();