- 浏览: 1499575 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (798)
- struts2 (42)
- servlet (20)
- quartz (4)
- jquery & ajax (24)
- tomcat (5)
- javascript (15)
- struts1 (8)
- 搜索关键字及链接 (3)
- fckeditor (3)
- Apache (5)
- spring (22)
- linux (3)
- 企业应用 (8)
- 综合应用 (13)
- 服务器 (2)
- 数据库 (85)
- 性能调优 (21)
- 网络应用 (15)
- 缓存技术 (8)
- 设计模式 (39)
- 面试题 (7)
- 程序人生&前辈程序员 (29)
- java基础 (59)
- hibernate (75)
- log4j (4)
- http (11)
- 架构设计 (28)
- 网页设计 (12)
- java邮件 (4)
- 相关工具 (11)
- ognl (7)
- 工作笔记 (18)
- 知识面扩展 (12)
- oracle异常 (1)
- 正则表达式 (2)
- java异常 (5)
- 项目实践&管理 (1)
- 专业术语 (11)
- 网站参考 (1)
- 论坛话题 (2)
- web应用 (11)
- cxf&webservice (22)
- freemarker (3)
- 开源项目 (9)
- eos (1)
- ibatis (6)
- 自定义标签 (3)
- jsp (3)
- 内部非公开文档(注意:保存为草稿) (0)
- 国内外知名企业 (2)
- 网店 (3)
- 分页 (1)
- 消费者习惯 (2)
- 每日关注 (1)
- 商业信息 (18)
- 关注商业网站 (1)
- 生活常识 (3)
- 新闻 (2)
- xml&JSON (5)
- solaris (1)
- apache.common (3)
- BLOB/CLOB (1)
- lucene (2)
- JMS (14)
- 社会进程 (8)
- SSH扩展 (2)
- 消费心理 (1)
- 珠三角 (1)
- 设计文档 (1)
- XWork&webwork (1)
- 软件工程 (3)
- 数据库及链接 (1)
- RMI (2)
- 国内外知名企业&人物 (1)
最新评论
-
司c马:
简介易懂、
OutputStream和InputStream的区别 -
在世界的中心呼喚愛:
解决我的问题
Java获取客户端的真实IP地址 -
bo_hai:
都是些基本的概念呀!
SSO -
tian_4238:
哥们,你也是搞水利这块的吧。
巧用SQLQuery中的addScalar -
loveEVERYday:
java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp小结
如果使用原生sql语句进行query查询时,hibernate是不会自动把结果包装成实体的。所以要手动调用addEntity(Class class)等一系列方法。
如session.createSQLQuery(sql).addEntity(Class class);注意hibernate3.0.5不支持,单个参数的addEntity方法
另外,hibernate3.2可以对原生sql 查询使用ResultTransformer。这会返回不受Hibernate管理的实体。
session.createSQLQuery("SELECT NAME, BIRTHDATE FROM CATS")
.setResultTransformer(Transformers.aliasToBean(CatDTO.class))
或setResultTransformer(new AliasToBeanResultTransformer (CatDTO.class))
上面的查询将会返回CatDTO的列表,它将被实例化并且将NAME和BIRTHDAY的值注射入对应的属性或者字段。
http://bbs.xml.org.cn/blog/more.asp?name=lhwork&id=15351
但必须注意,对每一个列都必须addScalar("列名")
既然如此,
那么setResultTransformer与addEntity的区别是什么呢?一个区别是前者支持查任意的列,后者必须用select * from users的形式或select {a.*},{b.*} from a,b where ....。
String hql = "select {cdc.*} " +
"from ta_car_dept cd," +
"ta_cardept_desc cdc " +
"where cd.s_code in ( "+sCode+" )" +
" and cd.type = 1" +
" and cdc.lan_id = 1" +
" and cd.auto_type_id = cdc.auto_type_id ";
List list = session.createSQLQuery(hql).addEntity("cdc", TaCarDeptDesc.class).list();
===========
String hql = "select cd.s_code ,cdc.auto_name " +
"from ta_car_dept cd," +
"ta_cardept_desc cdc " +
"where cd.s_code in ( "+sCode+" )" +
" and cd.type = 1" +
" and cdc.lan_id = 1" +
" and cd.auto_type_id = cdc.auto_type_id ";
List list = session.createSQLQuery(hql).addScalar("s_code", Hibernate.STRING).addScalar("auto_name", Hibernate.STRING).list();
发表评论
-
自定义用户类(UserType)的使用
2011-08-04 10:46 1854学习hibernate有段时间了,最近复习这门技术时看到了自定 ... -
技巧:利于ThreadLocal模式管理Session
2011-08-02 10:31 1263在利用Hibernate开发DAO模块时,我们和Session ... -
Hibernate中的回调与拦截机制
2011-07-27 17:31 1459在某些情况下,我们需要对实体的CURD操作进行捕获并执行一些操 ... -
HibernateTemplate中HibernateCallback的事务
2011-07-04 14:41 1439目的:使用HibernateTemplate执行execute ... -
Hibernate的复杂用法HibernateCallback
2011-07-04 14:40 1334HibernateTemplate还提供一种更加灵活的方式来操 ... -
Hibernate session FlushMode有五种属性
2011-07-04 13:59 17271、NEVER:已经废弃了,被MANUAL取代了2 MANUA ... -
数据库持久层——浅谈hibernate中的Session
2011-07-01 22:49 1665大多数情况下,Session 管理的目标聚焦于通过合理的设 ... -
详解Hibernate Session
2011-07-01 22:42 1487这里介绍Hibernate Session,Ses ... -
HttpSession与Hibernate中Session的区别
2011-07-01 22:41 1288一、javax.servlet.http.HttpSess ... -
巧用SQLQuery中的addScalar
2011-06-02 17:16 5741当我们用HQL进行子查询的时候,如select * from ... -
Hibernate的clear(),flush(),evict()方法详解
2011-03-24 11:18 17691.Clear 方法 无论是Load 还是 G ... -
hibernate模糊查询-Restrictions.ilike & Expression.like
2011-03-11 10:32 16351Criteria criteria = session.c ... -
Hibernate分页查询小结
2011-03-10 11:14 1824通常使用的Hibernate通常是三种:hql查询,QBC查询 ... -
current_session_context_class
2011-03-07 15:31 1292此设置的作用如下: What does sessionFac ... -
Hibernate的拦截器和监听器
2010-12-14 15:06 1384核心提示:最近项目需要,用到了Hibernate的拦截器和 ... -
孙卫琴.精通Hibernate:Java对象持久化技术详解_触发器使缓存与数据库不一致
2010-12-14 08:46 1382p198 -
孙卫琴.精通Hibernate:Java对象持久化技术详解_优化报表查询的性能
2010-12-13 17:51 1267p332 -
孙卫琴.精通Hibernate:Java对象持久化技术详解_查询结果类型
2010-12-13 17:34 1300p329 -
孙卫琴.精通Hibernate:Java对象持久化技术详解_投影查询
2010-12-13 17:31 1420p325 -
深入浅出hibernate_夏昕_hibernate别名完成ResultSet和实体的映射
2010-12-13 17:09 1351p199
相关推荐
在某些情况下,开发者可能需要使用原生SQL查询来执行特定的数据库操作,这时就可以利用Hibernate的SQLQuery功能。本文将详细讲解如何使用Hibernate的SQLQuery进行本地SQL查询。 首先,创建SQLQuery实例是通过...
在上面的代码中,我们使用 `Session.createSQLQuery()` 方法创建了一个 `SQLQuery` 对象,然后使用 `addEntity()` 方法指定了查询结果的实体类型,最后使用 `list()` 方法执行查询并获取结果。 使用 ...
《Hibernate中的本地SQL查询SQLQuery》 在Java的持久化框架Hibernate中,有时我们需要使用原生的SQL查询来实现特定的数据库操作,这时就需要利用到SQLQuery接口。本篇文章将详细解析如何使用Hibernate的SQLQuery来...
在Hibernate中,你可以通过`Session`对象的`createSQLQuery`方法创建一个SQL查询。例如: ```java Query query = session.createSQLQuery("select * from t_user usr"); ``` 执行上述代码后,Hibernate将会执行...
SQLQuery query = session.createSQLQuery("SELECT * FROM User"); List results = query.list(); ``` 这种方法可以自由地编写任何有效的SQL,但需要手动映射查询结果到Java对象。如果返回结果需要映射到实体类...
SQLQuery query = session.createSQLQuery(sql); ``` 如果查询返回的是单个对象,我们可以使用`addEntity()`方法指定结果应映射到的实体类: ```java query.addEntity(MyEntity.class); MyEntity result = ...
在 Hibernate 中,使用 SQLQuery 可以执行 Native SQL 查询,控制查询的执行是通过 SQLQuery 接口进行的,通过执行 Session.createSQLQuery() 获取这个接口。下面将详细介绍如何使用这个 API 进行查询。 标量查询...
首先,我们需要理解Hibernate中的`SQLQuery`接口,这是执行原生SQL查询的主要入口。通过`Session`对象的`createSQLQuery`方法,我们可以创建一个`SQLQuery`实例,然后设置SQL语句: ```java Session session = ...
- `SQLQuery`对象:通过`Session.createSQLQuery()`方法创建,用于执行自定义SQL查询。 - 结果集转换:`addEntity()`方法用于指定查询结果应被映射到哪个实体类,`list()`或`scroll()`方法执行查询并返回结果集,...
SQLQuery query = session.createSQLQuery(sql); query.addEntity(User.class); List<User> users = query.list(); ``` 原生SQL查询可以返回结果集、单个值或自定义的结果类型。但需要注意的是,这种方式可能会丢失...
sqlQuery.addEntity(YourEntityName.class); List<YourEntityName> allData = sqlQuery.list(); transaction.commit(); session.close(); ``` 在这里,你需要将`your_table_name`替换为实际的数据库表名,并...
在 Hibernate 中,createQuery 和 createSqlQuery 是两个常用的查询方法,但是它们之间存在着一些关键的区别。了解这两个方法的差异对于正确地使用 Hibernate 进行数据库操作至关重要。 createQuery 方法 ...
SQLQuery query = session.createSQLQuery(sql).addEntity(YourResultEntity.class); query.setParameter(1, param1); query.setParameter(2, param2); List<YourResultEntity> result = query.list(); for ...
一、简单的 SQLQuery 在最简单的情况下,我们可以使用 createSQLQuery 方法来执行一个简单的 SQL 查询,例如: ```java List cats = sess.createSQLQuery("select * from cats").addEntity(Cat.class).list(); ``` ...
Hibernate提供`Session`接口的`createSQLQuery()`方法来创建一个`SQLQuery`对象,用于执行原生的SQL查询。例如,以下代码展示了如何通过Native SQL获取`guestbook`表的所有记录,并打印结果: ```java ...
SQLQuery query = session.createSQLQuery(sql).addEntity(User.class); query.setParameter(1, "testUser"); List<User> users = query.list(); ``` ### 五、Hibernate的Criteria与DetachedCriteria Criteria API...
SQLQuery query = session.createSQLQuery(sql); // 将结果映射到一个自定义的结果类 query.addEntity(CustomerSummary.class); List<CustomerSummary> resultList = query.list(); ``` **说明:** - 在Native ...
- 在执行本地SQL查询时,我们需要使用`addEntity()`方法来指定返回结果中对应的实体类,这样Hibernate就能自动将查询结果转化为Java对象。 2. **创建一个基于SQL的查询** - 在`StudentDAO.java`中,`sqlQuery()`...
SQLQuery q = s.createSQLQuery("select * from user").addEntity(User.class); List<User> rs = q.list(); ``` 然而,这种方式破坏了Hibernate的跨数据库特性,且不易维护。 3. QBC(Query By Criteria)标准...