hibernate中SQLQuery的addEntity();方法
2016-06-05 15:36
429 查看
如果使用原生sql语句进行query查询时,hibernate是不会自动把结果包装成实体的。所以要手动调用addEntity(Classclass)等一系列方法。
如session.createSQLQuery(sql).addEntity(Classclass);注意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 ....。
如session.createSQLQuery(sql).addEntity(Classclass);注意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 ....。
相关文章推荐
- Android Gradle Plugin指南(五)——Build Variants(构建变种版本)
- Hibernate SQLQuery 原生SQL 查询及返回结果集处理-1
- 在子线程 中更新UI的代码
- jsp页面在IE8下文本模式自动为“杂项(Quirks)”导致页面显示错位
- 前端JS框架系列之requireJS基础学习
- 四. 控件-UIPickerView
- 四. 控件-UIPickerView
- No positional parameters in query: queryUser
- backbone + requirejs + zepto + underscore
- 创建一个类实现读取一个文件中的每一行显示出来。
- android的各种UI
- Android UI Libs之android-gif-drawable
- UIViewContentMode 图片排版
- 基于Android Architecture Blueprints的MVP案例分析与实现
- Java Map 按Key排序和按Value排序
- UISwitch的使用
- UGUI实现页面滑动
- Android酷炫实用的开源框架(UI框架)
- UIPickerView的使用
- Mysql 设置超时重连 autoReconnect=true