10.4.4. 使用原生SQL的查询
你可以使用createSQLQuery()
方法,用SQL来描述查询,并由Hibernate将结果集转换成对象。 请注意,你可以在任何时候调用session.connection()
来获得并使用JDBC Connection
对象。 如果你选择使用Hibernate的API, 你必须把SQL别名用大括号包围起来:
List cats = session.createSQLQuery(
"SELECT {cat.*} FROM CAT {cat} WHERE ROWNUM<10",
"cat",
Cat.class
).list();
List cats = session.createSQLQuery(
"SELECT {cat}.ID AS {cat.id}, {cat}.SEX AS {cat.sex}, " +
"{cat}.MATE AS {cat.mate}, {cat}.SUBCLASS AS {cat.class}, ... " +
"FROM CAT {cat} WHERE ROWNUM<10",
"cat",
Cat.class
).list()
和Hibernate查询一样,SQL查询也可以包含命名参数和占位参数。 可以在第 16 章 Native SQL查询找到更多关于Hibernate中原生SQL(native SQL)的信息。