Hibernate3的NativeSQL查询-使用SQLQuery

转载 2007年09月14日 15:37:00

对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取这个接口。最简单的情况下,我们可以采用以下形式:

List cats = sess.createSQLQuery("select * from cats")
.addEntity(Cat.class)
.list();

这个查询指定了:

  • SQL查询字符串

  • 查询返回的实体

这里,结果集字段名被假设为与映射文件中指明的字段名相同。对于连接了多个表的查询,这就可能造成问题,因为可能在多个表中出现同样名字的字段。下面的方法就可以避免字段名重复的问题:

List cats = sess.createSQLQuery("select {cat.*} from cats cat")
.addEntity("cat", Cat.class)
.list();

这个查询指定了:

  • SQL查询语句,它带一个占位符,可以让Hibernate使用字段的别名.

  • 查询返回的实体,和它的SQL表的别名.

addEntity()方法将SQL表的别名和实体类联系起来,并且确定查询结果集的形态。

addJoin()方法可以被用于载入其他的实体和集合的关联.

List cats = sess.createSQLQuery(
"select {cat.*}, {kitten.*} from cats cat, cats kitten where kitten.mother = cat.id"
)
.addEntity("cat", Cat.class)
.addJoin("kitten", "cat.kittens")
.list();

原生的SQL查询可能返回一个简单的标量值或者一个标量和实体的结合体。

Double max = (Double) sess.createSQLQuery("select max(cat.weight) as maxWeight from cats cat")
.addScalar("maxWeight", Hibernate.DOUBLE);
.uniqueResult();

除此之外,你还可以在你的hbm文件中描述结果集映射信息,在查询中使用。

List cats = sess.createSQLQuery(
"select {cat.*}, {kitten.*} from cats cat, cats kitten where kitten.mother = cat.id"
)
.setResultSetMapping("catAndKitten")
.list();
 

相关文章推荐

Hibernate使用NativeSQL查询类型为char的columns

小妹花了一天的时间,终于研究出点结果,很是高兴啊,但是还有很多问题!现在来交代一下事情经过: 领导要求通过left join 查询实现一个功能——在代码表(dm_ship)里有哪些行,被业务表(t_...

Hibernate3查询返回Map探秘

-源于我对它的一个误会     sparta-紫杉 2010-4-14 9:02      开发环境: eclipse3.4.2 + weblogic10.3 + jdk1.6.0_13 ...

Hibernate3中DetachedCriteria的使用

使用detachedCriteria时,很多时候需要参考下面的资料: 先说排序: detachedCriteria.addOrder(Order.desc(properyName)); Crite...

使用Hibernate3实现分页功能

参考资料: http://blog.csdn.net/zhjb1025/archive/2006/04/19/668631.aspx http://www.cnblogs.com/HuaiHuai...

使用MyEclipse开发第一个Hibernate3程序

新建Java Project:testHibernate 在项目上右击AddHibernate Capabilities… 添加相关类及文件: User.java/User.hbm.xml/Te...

Hibernate3的动态条件查询DetachedCriteria

在常规的Web编程中,有大量的动态条件查询,即用户在网页上面自由选择某些条件,程序根据用户的选择条件,动态生成SQL语句,进行查询。   针对这种需求,对于分层应用程序来说,Web层需要传递一个...

hibernate3 查询表 返回list集合

1.查询实体

hibernate3和struts2和spring使用到的jar包详解

SSH三大框架整合需要的JAR包 Hibernate Jar: hibernate3.jar,这个是hibernate3.0的核心jar包,必须的,呵呵,没的选,像我们常用的Session,Quer...
  • lurao
  • lurao
  • 2015-12-02 22:58
  • 887

Hibernate3的DetachedCriteria使用

Criteria對SQL進行封裝,讓開發人員可以用物件的方式來對資料庫進行操作,例如下面的查詢User表格中的所有資料: Criteria criteria = session.createCr...

Hibernate3注解使用与spring 整合

(1) 简介: 在过去几年里,Hibernate不断发展,几乎成为Java数据库持久性的事实标准。它非常强大、灵活,而且具备了优异的性能。在本文中,我们将了解如何使用Java 5 注释来简化Hib...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)