Hibernate3.x容许使用手写SQL语句,包括存储过程,全部的建立,更新,删除和load操做。java
应用程序将从会话建立一个原生SQL查询(Session接口上)createSQLQuery()方法:sql
public SQLQuery createSQLQuery(String sqlString) throws HibernateException
当传递一个包含SQL查询到createSQLQuery()方法,能够将SQL结果与任何现有的Hibernate实体,联接,或者一个标量结果使用addEntity()方法,addJoin(),和addScalar()方法关联的字符串。缓存
标量查询:
最基本的SQL查询是从一个或多个表中获得标量(数值)的列表。如下是语法使用原生SQL标量的值:session
String sql =
"SELECT first_name, salary FROM EMPLOYEE"
;
SQLQuery query = session.createSQLQuery(sql);
query.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);
List results = query.list();
String sql =
"SELECT * FROM EMPLOYEE"
;
SQLQuery query = session.createSQLQuery(sql);
query.addEntity(Employee.
class
);
List results = query.list();
命名SQL查询:
如下是语法经过addEntity()方法来从原生SQL查询得到实体对象和使用命名SQL查询。测试
1
2
3
4
5
|
String sql =
"SELECT * FROM EMPLOYEE WHERE id = :employee_id"
;
SQLQuery query = session.createSQLQuery(sql);
query.addEntity(Employee.
class
);
query.setParameter(
"employee_id"
,
10
);
List results = query.list();
|
直接上测试代码spa