使用SQLQuery对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取这个接口。最简单的情况下,
我们可以采用以下形式:
Query q = session.createSQLQuery("select dname,loc from dept");
List<Object[]> list = q.list();// 返回的是一个数组
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i)[0] + "\n---\t" + list.get(i)[1]);
}
使用 addScalar()避免过多的使用 ResultSetMetadata
Query q = session.createSQLQuery("select * from dept")
.addScalar("deptno", Hibernate.INTEGER)
.addScalar("dname", Hibernate.STRING);//可以省略类型,但由方言(Dialect)控制
List<Object[]> list = q.list();// 返回的是一个数组
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i)[0] + "\n---\t" + list.get(i)[1]);
}
实体查询(Entity queries)处理关联和集合类(Handling associations and collections)
Query q = session.createSQLQuery(
"select e.*,d.* from emp e,dept d where e.deptno=d.deptno")
.addEntity(Emp.class).addEntity(Dept.class);
List<Object[]> list = q.list();// 返回的是一个数组
for (int i = 0; i < list.size(); i++) {
Emp e = (Emp) list.get(i)[0];
Dept d = (Dept) list.get(i)[1];
System.out.println(e.getEmpno() + "\n---\t" + d.getDeptno());
}
命名sql查询
在配置文件中加 后使用
<sql-query name="dept">
<return alias="dept" class="org.ymm.entity.Dept" />
select * from dept where deptno=?
</sql-query>
List list =session.getNamedQuery("dept").setString(0,"10").list();
System.out.println(list.size());
一个命名查询可能会返回一个标量值,必须使用<return-scalar>
元素来指定字段的别名和
Hibernate 类型
<sql-query name="Dept_query">
<return-scalar column="dname" type="string"/>
<return-scalar column="deptno" type="long"/>
select d.dname as dname,d.deptno as deptno from dept d where d.deptno=?
</sql-query>
或是
<resultset name="result">
<return-scalar column="dname" type="string"/>
<return-scalar column="deptno" type="long"/>
</resultset>
<sql-query name="Dept_query" resultset-ref="result">
select d.dname as dname,d.deptno as deptno from dept d where d.deptno=?
</sql-query>
分享到:
相关推荐
Hibernate SQLQuery 查询Oracle char类型结果为一个字符解决方法 Hibernate SQLQuery 查询Oracle char类型结果为一个字符解决方法 Hibernate SQLQuery 查询Oracle char类型结果为一个字符解决方法 Hibernate SQL...
hibernate sql hqlsql
NULL 博文链接:https://mlxnle.iteye.com/blog/1766676
通过Session接口,我们能够很方便的创建一个SQLQuery(SQLQuery是一个接口,在Hibernate4.2.2之前,默认返回的是SQLQuery的实现类——SQLQueryImpl对象,在下文中出现的SQLQuery如非注明,都是指该子类)对象来进行...
fix包 博文链接:https://raymondhekk.iteye.com/blog/250427
Hibernate+本地SQL查询SQLQuery宣贯.pdf
Hibernate+本地SQL查询SQLQuery.pdf
如果希望通过编程的方式创建查询,Hibernate提供了完善的按条件(Query By Criteria, QBC)以及按样例(Query By Example, QBE)进行Hibernate查询的功能。 你也可以用原生SQL(native SQL)描述Hibernate查询,Hibernate...
Hibernate中的query 博客分类: • Hibernate HibernateSQLSQL ServerMySQLJDBC Hibernate中的query.setFirstResult(),query.setMaxResults(); 一、query.scroll()和query.setFirstResult(),query....
上传的资料都是非常经典的,这也是我学习过程中的心得,希望大家能给我指点,也希望大家多上传资料共同学习。千万不要传空文件夹。。。那些人很可恶啊
HQL(Hibernate Query Language):是面向对象的查询语句,它的语法和SQL语句有些相像,在运行时才得以解析.HQL并不像SQL那样是.
使用本地sql语句查询后,无需再使用Object对查询结果进行强制转换,而是直接将查询结果放到实体Bean里了。 PS: 其实只有一版,这里只所以叫最终版是因为该附件我上传了好几天传不上去,到最后报告说‘资源已经存在...
MockDatabase-开发 一个模拟数据库,用于对Hibernate Criteria,Query和SQLQuery进行单元测试。
HQL is database independent and translated into SQL by Hibernate at runtime. When writing HQL, we can concentrate on the objects and properties without knowing much detail on the underlying database. ...
Hibernate中使用Criteria Query各种QBC查询
◆使用的SQL语言不同:JDBC使用的是基于关系型数据库的标准SQL语言,Hibernate使用的是HQL(Hibernate query language)语言 ◆操作的对象不同:JDBC操作的是数据,将数据通过SQL语句直接传送到数据库中执行,...
本示例演示Hibernate 3.2呼叫Oracle的存贮过程和函数,以及通过Hibernate的Query接口简化JDBC的开发步骤--两个步骤得到List集合。使用这种方式开发可以要求开发人员不需要太了解Hibernate框架,但是需要开发人员非常...
2.通过Hibernate执行SQL 2.1 创建session Configuration config = new Configuration(); config.configure(); SessionFactory sf = config.buildSessionFactory(); Session session = sf.openSession();