文档章节

hibernate 返回不同表中的数据

不打伞的小鱼
 不打伞的小鱼
发布于 2015/07/02 19:02
字数 431
阅读 21
收藏 0

  我们做的内部项目,这周一检查v0版了,感觉有一些逻辑是我没想到的,看来自己在这方便还是要多努力;对于hibernate的一些应用,还是不太会用,哎,不过总算是自己前后台都完成了大部分。来说说hibernate返回两张不同表字段数据。

  需求是这样的:想要返回task的一些信息,和task的状态(有一张专门的TaskStatus表)。

  这涉及到task、taskStatus两张表,有两种办法,一个是写一个包含所有需要返回字段的pojo;一个是在SQLQuery后面加上addEntity().addEntity()。前一种方式可以选择性返回字段,而后一种方式在select 后面只能返回这两张表的所有字段,即 TableName.* 。

  我把两种方式分别列出来:

  方式一:写一个TaskAdnStatusPojo.java

                dao层的query如下:

                 

Query query = getSession().createSQLQuery("select tstatus.sTaskId,task.tAssignee,task.tTitle,task.tCreateId," +

                "task.tDescription,task.tDeadLine,task.tSource,tuser.uName," +

                "task.tFinisher,tstatus.sStatus " +

                "from Ttask task, Ttaskstatus tstatus,tuser where task.tId=tstatus.sTaskId and task.tAssignee=tuser.uId                         and tstatus.sIsNew='Y'")

                .setResultTransformer(Transformers.aliasToBean(TaskAndStatusPojo.class));

或者把红色那段换成:

                .setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);

        两者的区别:前一种在返回值含有日期的时候,会调用model中的对应get/set方法来转换日期格式,而后种不会调用model中的方法。


    方式二:以addEntity的方式

            

Query query = getSession().createSQLQuery("select task.*, tstatus.* " +

                "from Ttask task, Ttaskstatus tstatus where task.tId=tstatus.sTaskId and tstatus.sIsNew='Y'")

                .addEntity(Ttask.class).addEntity(Ttaskstatus.class);


        这两种方式都可以实现功能,看自己的喜好吧。需要特别注意的是:在使用pojo类的时候,需要给它一个默认的构造方法,不然会报错。



        


© 著作权归作者所有

上一篇: java 读取excel文件
下一篇: js 知识备忘
不打伞的小鱼
粉丝 69
博文 42
码字总数 24218
作品 0
深圳
程序员
私信 提问
Hibernate加载树形结构的数据怎么用上二级缓存?

经常有树形结构的数据保存在一张二维表中,例如组织架构,多级菜单等。一般是在一张表中使用ID,PID作关联。我项目中的是这样一个树形菜单: 下面是关联配置: 这些数据由于很修改少,访问频繁...

喜之郎
2012/09/29
1K
4
Hibernate性能优化4( 转)

Hibernate性能优化4( 转) 在处理大数据量时,会有大量的数据缓冲保存在 Session 的一级缓存中,这缓存大太时会严重显示性能,所以在使用 Hibernate 处理大数据量的,可以使用 session.clear(...

九爷
2011/05/14
113
0
Hibernate框架学习之注解配置关系映射

上篇文章我们通过注解对映射了单个实体类,但是具体项目中往往实体类之间又是相互关联的,本篇文章就是从实体类之间存在的不同关联角度,具体学习下如何映射他们之间的关联,主要涉及内容如下...

Single_YAM
2017/11/15
0
0
Hibernate 5 开始使用指南前言

同时在面向对象软件和关系型数据库进行工作,可能会非常复杂和费时。数据在对象和数据库之间可能会不一致,然后导致开发成本会非常高。 Hibernate 是一个针对 Java 环境的对象关系映射(Obj...

honeymoose
09/15
16
0
Hibernate操作数据库

1,使用Hibernate加载数据 加载数据是指通过标识符得到指定类的持久化对象,Session提供了get()和load() 两种方法来加载数据 (不操作数据不用事务这个概念) 1>get() public void HIbernateTe...

u012843873
2018/01/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

postman批量测试

postman批量调用: 先单个调用,成功了 再save为collection 再点击三角形,点击run 设置1000次,run就可以 见《postman批量测试.docx》

Danni3
27分钟前
8
0
js 对象操作 js 对象和对象赋值 去除关联性 对象原型操作 把一个对象A赋值给另一个对象B 并且对象B 修改 不会影响 A对象

当我们在项目需要 复制一个对象到另一个对象并且 被复制的对象不能受复制后的对象的影响。 我先总结下 我们哪些方法可以复制对象 // 直接赋值var obj1 = { a: 1 };var obj2 = obj1;...

xiaogg
28分钟前
7
0
Go微服务全链路跟踪详解

在微服务架构中,调用链是漫长而复杂的,要了解其中的每个环节及其性能,你需要全链路跟踪。 它的原理很简单,你可以在每个请求开始时生成一个唯一的ID,并将其传递到整个调用链。 该ID称为C...

倚天码农
42分钟前
5
0
QML笔记-对QML中信号与槽的基本认识

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qq78442761/article/details/90753986 目录 基本概念 演示...

shzwork
49分钟前
5
0
SSH安全加强两步走

从 OpenSSH 6.2 开始已经支持 SSH 多因素认证,本文就来讲讲如何在 OpenSSH 下启用该特性。 OpenSSH 6.2 以后的版本多了一个配置项 AuthenticationMethods。该配置项可以让 OpenSSH 同时指定...

xiangyunyan
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部