`
newleague
  • 浏览: 1504690 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

hibernate中SQLQuery的addEntity();方法

阅读更多

如果使用原生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();

分享到:
评论
2 楼 xuejiangtao 2011-11-25  
1 楼 chenpi529 2011-10-25  

相关推荐

    Hibernate+本地SQL查询SQLQuery宣贯.pdf

    在某些情况下,开发者可能需要使用原生SQL查询来执行特定的数据库操作,这时就可以利用Hibernate的SQLQuery功能。本文将详细讲解如何使用Hibernate的SQLQuery进行本地SQL查询。 首先,创建SQLQuery实例是通过...

    hibernate执行原生sql语句

    在上面的代码中,我们使用 `Session.createSQLQuery()` 方法创建了一个 `SQLQuery` 对象,然后使用 `addEntity()` 方法指定了查询结果的实体类型,最后使用 `list()` 方法执行查询并获取结果。 使用 ...

    Hibernate+本地SQL查询SQLQuery.pdf

    《Hibernate中的本地SQL查询SQLQuery》 在Java的持久化框架Hibernate中,有时我们需要使用原生的SQL查询来实现特定的数据库操作,这时就需要利用到SQLQuery接口。本篇文章将详细解析如何使用Hibernate的SQLQuery来...

    在Java的Hibernate框架中使用SQL语句的简单介绍

    在Hibernate中,你可以通过`Session`对象的`createSQLQuery`方法创建一个SQL查询。例如: ```java Query query = session.createSQLQuery("select * from t_user usr"); ``` 执行上述代码后,Hibernate将会执行...

    hibernate 执行原生sql的几种方式

    SQLQuery query = session.createSQLQuery("SELECT * FROM User"); List results = query.list(); ``` 这种方法可以自由地编写任何有效的SQL,但需要手动映射查询结果到Java对象。如果返回结果需要映射到实体类...

    hibernate将本地SQL查询结果封装成对象

    SQLQuery query = session.createSQLQuery(sql); ``` 如果查询返回的是单个对象,我们可以使用`addEntity()`方法指定结果应映射到的实体类: ```java query.addEntity(MyEntity.class); MyEntity result = ...

    Native SQL查询 (使用SQLQuery).doc

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

    hibernate3中通过nativesql或取部分字段并映射为具体对象的实现

    首先,我们需要理解Hibernate中的`SQLQuery`接口,这是执行原生SQL查询的主要入口。通过`Session`对象的`createSQLQuery`方法,我们可以创建一个`SQLQuery`实例,然后设置SQL语句: ```java Session session = ...

    hibernate将本地SQL查询结果封装成对象(最终).zip

    - `SQLQuery`对象:通过`Session.createSQLQuery()`方法创建,用于执行自定义SQL查询。 - 结果集转换:`addEntity()`方法用于指定查询结果应被映射到哪个实体类,`list()`或`scroll()`方法执行查询并返回结果集,...

    Hibernate中的查询:HQL、Criteria、原生SQl

    SQLQuery query = session.createSQLQuery(sql); query.addEntity(User.class); List<User> users = query.list(); ``` 原生SQL查询可以返回结果集、单个值或自定义的结果类型。但需要注意的是,这种方式可能会丢失...

    Hibernate_Query查询所有数据

    sqlQuery.addEntity(YourEntityName.class); List<YourEntityName> allData = sqlQuery.list(); transaction.commit(); session.close(); ``` 在这里,你需要将`your_table_name`替换为实际的数据库表名,并...

    关于hibernate 的createQuery和createSqlQuery 的区别

    在 Hibernate 中,createQuery 和 createSqlQuery 是两个常用的查询方法,但是它们之间存在着一些关键的区别。了解这两个方法的差异对于正确地使用 Hibernate 进行数据库操作至关重要。 createQuery 方法 ...

    spring hibernate执行存储过程的例子

    SQLQuery query = session.createSQLQuery(sql).addEntity(YourResultEntity.class); query.setParameter(1, param1); query.setParameter(2, param2); List<YourResultEntity> result = query.list(); for ...

    hibernate 的createSQLQuery的几种用法

    一、简单的 SQLQuery 在最简单的情况下,我们可以使用 createSQLQuery 方法来执行一个简单的 SQL 查询,例如: ```java List cats = sess.createSQLQuery("select * from cats").addEntity(Cat.class).list(); ``` ...

    Native-SQL查询 (1).ppt

    Hibernate提供`Session`接口的`createSQLQuery()`方法来创建一个`SQLQuery`对象,用于执行原生的SQL查询。例如,以下代码展示了如何通过Native SQL获取`guestbook`表的所有记录,并打印结果: ```java ...

    hibernate查询方法

    SQLQuery query = session.createSQLQuery(sql).addEntity(User.class); query.setParameter(1, "testUser"); List<User> users = query.list(); ``` ### 五、Hibernate的Criteria与DetachedCriteria Criteria API...

    hibernate多表联合查询

    SQLQuery query = session.createSQLQuery(sql); // 将结果映射到一个自定义的结果类 query.addEntity(CustomerSummary.class); List<CustomerSummary> resultList = query.list(); ``` **说明:** - 在Native ...

    hibernate试验

    - 在执行本地SQL查询时,我们需要使用`addEntity()`方法来指定返回结果中对应的实体类,这样Hibernate就能自动将查询结果转化为Java对象。 2. **创建一个基于SQL的查询** - 在`StudentDAO.java`中,`sqlQuery()`...

    hibernate查询详解

    SQLQuery q = s.createSQLQuery("select * from user").addEntity(User.class); List<User> rs = q.list(); ``` 然而,这种方式破坏了Hibernate的跨数据库特性,且不易维护。 3. QBC(Query By Criteria)标准...

Global site tag (gtag.js) - Google Analytics