[推荐] hibernate-native sql support http://www.blogjava.net/alex0927/articles/194737.html
1.使用SQLQuery Session.createSQLQuery();
1.1标量查询 最基本的SQL查询就是获得一个标量(数值)的列表。
1.2 实体查询 通过 addEntity() 让原生查询返回实体对象。
1.3 处理关联和集合类 通过 addJoin() 方法可以让你将关联或集合连接进来。
1.4 返回多个实体
1.4.1 别名和属性引用
1.5. 返回非受管实体 可以对原生sql 查询使用ResultTransformer。这会返回不受Hibernate管理的实体。
1.6. 处理继承
1.7. 参数 原生查询支持位置参数(? 0)和命名参数(: varName)
2.使用命名SQL查询 xml 文件中定义好 HQL 语句,通过 sess.getNamedQuery("persons") 调用命名注入。
2.1. 使用return-property来明确地指定字段/别名
2.2. 使用存储过程来查询
2.2.1. 使用存储过程的规则和限制
.add(Expression.like("name", "T%")
.add(Expression.eq("age", newInteger(21))
.list();
1).使用顺序占位符 .age > ?
query.setInteger(0,20);
2).使用引用占位符 .name = :name
query.setParameter("name","Erica");
如果我们在Hibernate中需要查询多个表的不同字段,有两种方式获得结果:
1、对各个字段分别转化成对应类型
List result = q.list();
Iterator it = result.iterator();
while (it.hasNext()) {
Object[] tuple = (Object[]) it.next();
Members members = (Members) tuple[0];
String className = (String) tuple[1];
}
2、构造自己的复合类型