【Hibernate】连表查询获取实体对象或者List
来源:互联网 发布:openstreetmap数据 编辑:程序博客网 时间:2024/05/22 10:22
极度反感用sql查询,如果实体类变量太多,手写代码注入很麻烦,更喜欢用hibernate自动注入,但是遇到连表查询hql总是有问题,最近尝试了写了两个记录下,以防以后再用。
1.内连接
sql:
String hql = "select icon from TopicIcon as icon left join icon.topic as t order by t.rank asc ,t.id asc ";
hbm.xml
<many-to-one name="topic" class="com.pojo.Topic" fetch="select"> <column name="id_topic_ti" /></many-to-one>
2.连表查询
sql:
String hql = " select ct from Course as c , CourseContent as ctwhere c.id = ct.courseand c.enabled =:enabled
and ct.chapterType =:chapterType
and c.id =:id
";CourseContent.hbm.xml:<many-to-one name="course" class="com.pojo.Course" fetch="select"> <column name="COURSE_ID" /></many-to-one>CourseContent.javaprivate Long id;private Course course; private Integer chapterType;course.javaprivate Long id;private Boolean enabled;总结:内连接其实使用的左链接的方式,因为要获取表内全部数据。2中因为链表关联的是course,如果用c=ct.course或者c.id=ct.course都不可以,所以用了92语法。
1.别名一定要用as
2.查询表名、字段名一定要用java对应的类名、实例变量名字
3.如果java中是以一个类的方式关联的(比如2),关联方(CourseContent)用实例变量(course),关联类型(course)用主键id
c.id=ct.course
虽然部分人遇到这种情况会直接用hql查询id,然后再用id in()去查询结果一样可以直接得到结果list,但是对于hibernate4版本之前的,不包括4,not in和in是有限制的,如果超过2000条内容就会报错。而且先查询id再得到结果list两次查询,代码多,效率低。
因为是在工作中遇到时间匆忙,并没有很完备,比如innner join、left join以实体类未关联的用法,欢迎指正,补充。
0 0
- 【Hibernate】连表查询获取实体对象或者List
- Hibernate查询实体对象
- hibernate 查询实体类的list
- 016——hibernate实体对象查询&&list和iterate的区别
- Hibernate连表查询实例
- 【Hibernate步步为营】--hql查询之实体对象查询
- 关于Hibernate的连表查询
- Hibernate查询返回list对象分析学习
- hibernate sql查询返回对象list
- hibernate中通过查询语句返回实体对象
- hibernate查询SQL语句返回自定义实体对象
- hibernate查询SQL语句返回自定义实体对象
- hibernate查询SQL语句返回自定义实体对象
- 【hibernate】——hql简单属性+实体对象查询
- hibernate获取实体属性
- HIbernate 操纵实体对象
- hibernate实体对象生命周期
- list实体对象转array实体对象
- Android 自定义View SeekBar 带浮动文字显示
- 我的PAT乙级练习题1002代码记录
- BGP SOO 防环机制
- freeline的使用
- [leetcode] 481. Magical String
- 【Hibernate】连表查询获取实体对象或者List
- WebView 和 WKWebView的对比
- kafka_0.10.1.0集群部署
- 设置手机存储及数据流量信号统一切换指令及接口
- 当今天各机关事业单位(包括中小学)收到文件通
- SSH框架实例学习1
- 神经网络浅讲:从神经元到深度学习
- python 发邮件 脚本
- Java 信号量 Semaphore 介绍