`
demojava
  • 浏览: 548973 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Hibernate createSQLQuery 直接操作数据库

    博客分类:
  • ORM
阅读更多

本文转载 http://hi.baidu.com/javahot158/blog/item/348024cb6a9cb733f9dc614f.html

当我们用HQL进行子查询的时候,如select * from Tree where pid in (select id from Tree,此时HIBERANTE就会报错,说什么*号错误之类的。但如果将*改为Tree类里的所有子段时就不会有问题了。就会像平时一样第一行数据返 回一

个Object[],然后你再根据Tree类里字段对Object[]数组里的值进行转换。这样一来比较麻烦。今天发现如果我SQL来查有一个方法可 以返回一个对象的。
Configuration config = new Configuration().configure();
SessionFactory sf     = config.buildSessionFactory();
Session session = sf.openSession();
Transaction ts = session.beginTransaction();
Query query = session.createSQLQuery("select * from Tree t where pid in (select id from Tree) ").addEntity(Tree.class); //返回对象
List  list = query.list(); 

此时在遍历list时就可以(Tree)list.get[i];将每一行的内容变换为一个对象了。

另还可以返回一个Map对象,也就是说在在list里包含多个Map,代码如下
Query query = session.createSQLQuery("select id,name from Tree t where pid in (select id from Tree) ").setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP); //返回一个map,KEY:为DB中名称一致(大小写一致)遍历list时就可以

Map map = (Map)list.get[i];

map.get("id");map.get("name");来取值。按你的SQL语句select后的字段名来作为map的Key,但这个key必须与数据库中的字段名一模一样。


还可以用作函数方面的。如
Query query = session.createSQLQuery("select sum(id) SUMID from Tree t where pid in (select id from Tree)
.addScalar("SUMID",Hibernate.INTEGER)  //转换类型,按DB中的type转
.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP); //返回一个map,KEY:为DB中名称一致(大小写一致)

直接就map.get("SUMID")可以取值了


还有一点就是这个方法在Hibernate3.2版本上才能正常运行。

 

分享到:
评论

相关推荐

    hibernate 的createSQLQuery的几种用法

    Hibernate 的 createSQLQuery 是 Hibernate 框架中的一种强大且灵活的查询机制,它允许开发者使用原生 SQL 语句来查询数据库。下面是 createSQLQuery 的几种常见用法: 一、简单的 SQLQuery 在最简单的情况下,...

    关于hibernate 的createQuery和createSqlQuery 的区别

    了解这两个方法的差异对于正确地使用 Hibernate 进行数据库操作至关重要。 createQuery 方法 createQuery 方法是 Hibernate 提供的一种查询机制,用于执行 HQL(Hibernate Query Language)语句。HQL 语句是一种...

    hibernate动态数据库进化版

    例如,使用`org.hibernate.boot.model.naming.PhysicalNamingStrategy`接口来自定义表名生成策略,或者利用`Session.createSQLQuery()`方法直接执行原生SQL。 2. **多数据库支持**:为了适应不同的数据库,如MySQL...

    hibernate query调用oracle存储过程

    在IT行业中,数据库管理和数据操作是至关重要的环节。Oracle数据库作为企业级的主流数据库系统,提供了丰富的存储过程和函数功能,以实现复杂的数据处理逻辑。而Hibernate作为一种流行的Java持久化框架,它允许...

    hibernate 数据库操作方法

    Hibernate是Java领域中一款强大的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来操作数据库,极大地简化了数据库操作。在Java应用中,尤其是Spring框架与Hibernate结合使用时,能够实现更高效的业务...

    使用hibernate连接oracle数据库的详细方法,代码实现实现数据库的增删改查.zip

    在IT行业中,数据库管理和操作是不可或缺的部分,而Hibernate作为Java领域的一个强大ORM(对象关系映射)框架,极大地简化了数据库操作。Oracle则是一种广泛使用的商业级关系型数据库管理系统,尤其在大型企业中广泛...

    精通hibernate数据库编程

    Hibernate是Java开发中的一个重要工具,它简化了数据库操作,使得开发者可以更专注于业务逻辑而不是繁琐的数据访问层实现。本教程结合了【Hibernate学习笔记】,提供了全面且深入的讲解,旨在让学习者对Hibernate有...

    hibernate-初次操作具体步骤共4页.pdf.zip

    hibernate是Java开发中的一款流行的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来操作数据库,而无需直接编写SQL语句。对于初次接触Hibernate的开发者来说,了解并掌握其操作步骤至关重要。本文件...

    SSH笔记-管理Session和批量操作数据库

    - 使用`Session.createSQLQuery()`或`Session.createQuery()`构建HQL(Hibernate Query Language)或SQL查询,然后调用`addBatch()`添加待执行的参数,最后调用`executeUpdate()`执行批量操作。 6. **通过 ...

    sqlserver的hibernate

    在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以更专注于业务逻辑而不是底层的SQL语句。本教程将介绍如何使用Hibernate操作SQLServer数据库,提供一个易入门的...

    hibernate 执行原生sql的几种方式

    这种方式更底层,可以进行更复杂的数据库操作。 ```java session.doWork(new Work() { public void execute(Connection connection) throws SQLException { Statement stmt = connection.createStatement(); ...

    hibernate连接Access应用项目例子

    Hibernate是Java开发中的一个流行ORM(对象关系映射)工具,它允许开发者用面向对象的方式处理数据库操作,而无需直接编写SQL语句。Access则是一种轻量级的关系型数据库管理系统,适用于小型项目和个人数据库需求。 ...

    Hibernate备课笔记.pdf

    3. Transaction:事务管理是数据库操作的基础,Hibernate提供了一种便捷的方式来处理事务,确保数据的一致性。 4. Cache:Hibernate内置了二级缓存机制,包括一级缓存Session和二级缓存SessionFactory,提高了数据...

    Hibernate执行持久层访问步骤

    在Java开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。它允许开发者使用面向对象的方式进行数据操作,而无需关注底层的SQL语句。本文将深入探讨Hibernate执行持久层访问的详细...

    hibernate单表基本操作实例

    【标题】"Hibernate单表基本操作实例"是一个关于如何使用Hibernate框架进行数据库操作的实践教程。Hibernate是一个流行的Java ORM(对象关系映射)框架,它允许开发者以面向对象的方式处理数据库,而无需直接编写SQL...

    basic-hibernate:封装Hibernate4数据库访问

    在Java开发中,数据库访问是不可或缺的一部分,而Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本项目"basic-hibernate"专注于封装Hibernate4,以实现高效、便捷的数据库访问。下面,...

    hibernate-release-5.0.0.Final(1).zip

    Hibernate是Java领域中广泛使用的ORM工具,它允许开发者用面向对象的方式处理数据库操作,降低了数据库访问的复杂性。通过提供一种对象-关系映射机制,Hibernate可以将数据库表映射为Java类,使得数据库操作如同操作...

    hibernate增删改查小例子

    【hibernate增删改查小例子】是一个基础的教程,旨在帮助初学者理解如何使用Hibernate框架进行数据库操作。Hibernate是Java开发中的一个强大的对象关系映射(ORM)框架,它简化了数据库交互,使开发者可以更专注于...

    hibernate的一个简单例程

    Hibernate通过将Java类与数据库表之间的映射关系定义在XML配置文件或注解中,实现了对象与数据库记录之间的自动转换,降低了数据库操作的复杂性。 **知识点二:环境配置** 在开始使用Hibernate之前,需要确保以下...

    HibernateDemo(hibernate基本用法演示)

    Hibernate 是一款强大的 Java ORM(对象关系映射)框架,它允许开发者在 Java 应用程序中以面向对象的方式处理数据库交互,大大简化了数据库操作。 在该项目中,`src` 文件夹通常包含 Java 源代码,其中可能有实体...

Global site tag (gtag.js) - Google Analytics