`
blacklab
  • 浏览: 20942 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类

使用SQLQuery

阅读更多
使用SQLQuery

对原生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();

命名SQL查询

可以在映射文档中定义查询的名字,然后就可以象调用一个命名的HQL查询一样直接调用命名SQL查询.在这种情况下,我们不 需要调用addEntity()方法.

< sql - query name = " persons " >

  < return  alias = " person "   class = " eg.Person " />

Select person.NAME AS {person.name},person.AGE AS {person.age},person.SEX AS {person.sex} FROM PERSON person Where person.NAME LIKE :namePattern

</ sql - query >

List people  =  sess.getNamedQuery( " persons " ).setString( " namePattern " , namePattern)

.setMaxResults( 50 )

.list();



****************************************************************
http://book.csdn.net/bookfiles/321/10032113046.shtml
  • 大小: 175.7 KB
  • 大小: 224.6 KB
0
0
分享到:
评论

相关推荐

    Native SQL查询 (使用SQLQuery).doc

    Native SQL 查询 (使用 SQLQuery) 在 Hibernate 中,使用 SQLQuery 可以执行 Native SQL 查询,控制查询的执行是通过 SQLQuery 接口进行的,通过执行 Session.createSQLQuery() 获取这个接口。下面将详细介绍如何...

    Hibernate SQLQuery执行原生SQL.docx

    在Java的Hibernate框架中,有时候我们需要执行自定义的SQL查询以获取特定的数据,这时就可以使用SQLQuery接口。本文将深入探讨Hibernate如何通过SQLQuery接口执行原生SQL查询,并展示如何处理查询结果。 一、创建...

    Sql。query。stress

    4. **性能指标监控**: SQL Query Stress不仅执行查询,还能收集如CPU使用率、内存消耗、I/O统计等性能数据,帮助分析瓶颈所在。 5. **事务管理**: 它支持在事务内执行查询,可以测试在并发事务下数据库的锁管理机制...

    关于sqlQuery读取数据问题

    当使用SQLQuery读取数据库时,如果单行数据超过65535字节,那么SQLQuery只会读取前65535个字节,超出部分将被截断。这种情况下,需要对相关的软件包进行调整以提高数据读取的上限。 #### 解决方案 本案例中提到的是...

    Hibernate SQLQuery 本地查询

    总结来说,"Hibernate SQLQuery 本地查询"这篇博客可能深入介绍了如何在Hibernate中使用SQLQuery执行自定义SQL查询,以及如何通过BaseDaoSupport类来封装这些查询,以提升代码的复用性和项目开发效率。通过对SQL...

    SQLQuery.sql

    SQLQuery.sql

    SQLQuery3.sql

    SQLQuery3.sql

    SQLQuery4.sql

    SQLQuery4.sql

    SQLQuery2.sql

    SQLQuery2.sql

    SQLQuery17.sql

    SQLQuery17.sql

    SQLQuery1.sql

    SQLQuery1.sql

    实验二《用SQLQuery工具和SQL语句 创建数据库与相应的表》

    在实验中,学生们将通过使用SQLQuery工具和SQL语句来实践这些基本的数据库管理任务,具体包括以下几个关键知识点: 1. **SQL语言基础**:SQL(Structured Query Language)是用于管理和处理关系数据库的标准语言。...

Global site tag (gtag.js) - Google Analytics