Hibernate 查询相关

 

[推荐]  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. 使用存储过程的规则和限制



方法链编程风格ist result=session.createCriteria(Customer.class)
    .add(Expression.like("name", "T%")
    .add(Expression.eq("age", newInteger(21))
    .list();



预编译语句Hibernate 中避免拼串, 使用预编译语句,
1).使用顺序占位符    .age > ?
     query.setInteger(0,20);
2).使用引用占位符    .name = :name
     query.setParameter("name","Erica");


 

Hibernate多表关联查询的结果处理 http://www.blogjava.net/kawaii/archive/2008/06/23/101930.html
如果我们在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、构造自己的复合类型

你可能感兴趣的:(Hibernate)