hibernate中的addEntity setResultTransformer的比较
来源:互联网 发布:反相比例运算电路数据 编辑:程序博客网 时间:2024/04/30 06:58
如果使用原生sql语句进行query查询时,hibernate是不会自动把结果包装成实体的。
所以要手动调用addEntity(Class class)等一系列方法。
1、session.createSQLQuery(sql).addEntity(Class class);
注意hibernate3.0.5不支持单个参数的addEntity方法
2、session.createSQLQuery(sql).setResultTransformer(Transformers.aliasToBean(Clazz.class))
或者setResultTransformer(new AliasToBeanResultTransformer (Clazz.class))
返回不受Hibernate管理的实体。
上面的查询将会返回Clazz的列表,它将被实例化并且将列表项的值注射入对应的属性或者字段。
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 ....。
1. 如果不设置addScalar方法可能会报转型错误的异常.
2.托管查询可以使用投影,只查询指定的列属性
所以要手动调用addEntity(Class class)等一系列方法。
1、session.createSQLQuery(sql).addEntity(Class class);
注意hibernate3.0.5不支持单个参数的addEntity方法
2、session.createSQLQuery(sql).setResultTransformer(Transformers.aliasToBean(Clazz.class))
或者setResultTransformer(new AliasToBeanResultTransformer (Clazz.class))
返回不受Hibernate管理的实体。
上面的查询将会返回Clazz的列表,它将被实例化并且将列表项的值注射入对应的属性或者字段。
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 sql = "select c.* from Clazz c "; List<Clazz> clazzs = (List<Clazz>) session.createSQLQuery(sql).addEntity(clazz).list(); String sql = "select c.id from Clazz c ";List<Clazz> clazzs = (List<Clazz>) session.createSQLQuery(sql) .addScalar("id", Hibernate.LONG) .addScalar("name", Hibernate.STRING) .setResultTransformer(Transformers.aliasToBean(Clazz.class)).list();特别注意:
1. 如果不设置addScalar方法可能会报转型错误的异常.
2.托管查询可以使用投影,只查询指定的列属性
总结:
hibernate实体类用addEntity
不受Hibernate管理的实体类用setResultTransformer
1 0
- hibernate中的addEntity setResultTransformer的比较
- hibernate中的addEntity setResultTransformer的比较
- hibernate中的addEntity setResultTransformer的比较
- hibernate addEntity setResultTransformer
- hibernate里createSQLQuery的addEntity()和setResultTransformer()方法
- hibernate里createSQLQuery的addEntity()和setResultTransformer()方法
- hibernate里createSQLQuery的addEntity()和setResultTransformer()方法
- hibernate里createSQLQuery的addEntity()和setResultTransformer()方法
- hibernate里createSQLQuery的addEntity()和setResultTransformer()方法
- createSQLQuery的addEntity跟setResultTransformer方法
- Hibernate的addEntity
- Hibernate 中setResultTransformer的作用
- hibernate中SQLQuery的addEntity()
- hibernate中SQLQuery的addEntity();方法
- hibernate中SQLQuery的addEntity();方法
- hibernate中SQLQuery的addEntity();方法
- hibernate中SQLQuery的addEntity();方法
- Hibernate SQLQuery.addEntity的使用示例
- 释放xcode占用硬盘空间 (转)
- System.arraycopy 实现多次点击
- DICOM通信 - PDU数据包(2)
- Android长按Power键弹出关机Dialog框GlobalActions解析
- 使用orm(Sequelize) 操作 MySQL (2)
- hibernate中的addEntity setResultTransformer的比较
- 和Linux大魔王一起愉快的玩耍(二)make命令和mekefile
- 深度工具合集安装(Nvidia+CUDA+cuDNN+Tensorflow+OpenBLAS+Caffe+Theano+Keras+Torch+Mxnet+X2Go)
- PHP安全过滤函数
- 配置高可用的Hadoop平台
- Ecshop实现微信第三方授权扫码登录
- 仿照linux下的uboot来DIY自己的arm11(6410)的bootloader
- LeetCode 27. Remove Elemen
- Qt 程序打包发布