hibernate 自定义字段查询映射为pojo对象的新思路
来源:互联网 发布:html手机游戏源码 编辑:程序博客网 时间:2024/05/21 03:25
一般的hibernate自定义字段多表查询时,返回的结果是object对象数组,这个对象数组没有办法直接映射为object对象,网上针对这个问题有一些解决方案。我这里记录一下我们项目组的另一种变相实现方式。个人觉得也挺好用的,没有网上说的那么复杂,具体实现如下:
首先是sql语句,sql语句定义要求返回一个键值对的map对象,下面是具体的定义例子:
StringBuffer hql = new StringBuffer();hql.append(" select new map(a.activityName as activityName, p.projectName as projectName, ");hql.append(" i.itemName as itemName, i.itemId as itemId, ");hql.append(" i.projectId as projectId, i.activityId as activityId, ");hql.append(" i.startDate as itemStartDate, i.endDate as itemEndDate, ");hql.append(" (select count(*) from TbbsUserenrollitems e where e.itemId=i.itemId) as itemParticipantNum) ");hql.append(" from TbbsItem i, TbbsProject p, TbbsActivityplan a where ");hql.append(" i.projectId=p.projectId and p.activityId=a.activityId ");这样定义的sql语句,使用hibernatetemplate执行之后,返回的将不会是一个list的object对象数组了,而是一个list的hashmap对象。然后再基于我们自定义的一个工具函数,具体实现如下:
public static Object assemble(Map<String, Object> objs, Class<?> targetClass) throws IllegalAccessException, InvocationTargetException, InstantiationException {if (null == objs) {return null;}Object target = targetClass.newInstance();if (target != null) {for(Map.Entry<String, Object> e : objs.entrySet()) {BeanUtils.copyProperty(target, e.getKey(), e.getValue());}}return target;}这里基于apache的beanutils工具提供的属性拷贝函数,依次调用hashmap里面的所有键值对,完成属性字段的映射。但是这里有一个要求就是这个字段必须和pojo类里面的字段名称是一样的(貌似大小写没有关系)。具体使用的例子如下:
ActivityMonitorDto amDto = (ActivityMonitorDto)ObjectUtil.assemble((Map<String, Object>)objs, ActivityMonitorDto.class);这样就可以完成自定义字段查询和pojo的映射了。
1 0
- hibernate 自定义字段查询映射为pojo对象的新思路
- Hibernate之使用sql语句查询多个表,返回多种字段,将返回结果映射到自定义的普通pojo类中
- 处理Hibernate中Pojo对象String属性不能映射Sqlserver2005 text类型字段问题
- 处理Hibernate中Pojo对象String属性不能映射Sqlserver2005 text类型字段问题 .
- Hibernate HQL 查询POJO部分字段
- Hibernate中使用未映射为主键的“id”字段进行查询的场景分析
- 解决Hibernate原生SQL映射问题 - SQL查询出来的结果映射为值对象
- Hibernate的hql查询加自定义字段
- java hibernate 映射和注解oracle含有blob字段的数据表的pojo源码
- Hibernate中将一个字段映射到POJO多个属性
- Hibernate中将一个字段映射到POJO多个属性
- hibernate多表查询返回的集合映射成自定义对象
- Hibernate 查询多个字段返回的list如何转为自定义对象,以及转换异常
- Hibernate 查询多个字段返回的list如何转为自定义对象
- hibernate查询oracle字段,转化为对象字段,字段名确定
- 使用addScala将SQLQuery自定义查询映射到pojo中
- HibernateTools-代码生成pojo对象和hibernate映射文件
- hibernate:映射文件的属性名必须和pojo类的属性名以及数据库字段名一一对应
- SQL count详细用法
- int *ptr=(int *)(&a+1)问题的探讨
- TCP/IP笔记 四.应用层(3)——HTTP
- unity单机ARPG游戏求伙伴····
- 微信API
- hibernate 自定义字段查询映射为pojo对象的新思路
- 沃通(WoSign)承办CA浏览器论坛北京工作会议圆满成功
- 无法访问局域网共享
- 图(Graph)——基本概念、存储、遍历
- 模拟和数字电源的 隔离连接方式
- oracle之日期转换函数
- 又是一场颠覆 家庭影院遭遇互联网思维
- 图(Graph)——最小生成树、最短路径、Kruskal、Dijkstra、Floyd
- java之 try catch finally