java-hibernate
mkl34367803
假如编程易懂得,那么程序员就不会热情地写出注释,也不会有得到编程的快乐。
展开
-
failed to lazily initialize a collection of role(hibernate一对多或者多对多懒加载问题)
hibernate 中fetch=FetchType.LAZY问题 分享| 2013-08-13 10:22殁恋 | 浏览 8358 次 编程语言我的实体类Deptment 中 @OneToMany(mappedBy="deptment",cascade=CascadeType.ALL,fetch=FetchType.LAZY) public Set get原创 2016-05-28 14:38:50 · 3026 阅读 · 1 评论 -
如何解决 hibernate 多级对象加载并避免join和N+1次查询问题
有个对象A,有个属性 B 也是个对象,对象B中有属性ID, Name 和其他N个属性。 查询 A 对象时不能使用延时加载(需求需要),不想使用 join 方式(A对象32个列,B对象28个列),B中我只想要他的ID和Name,其他字段不需要。不能出现N+ 1次查询。 哪位大侠教教我...可以通过动态实例化查询结果来实现。具体做法select new AAA(a.属性,b.id,b.转载 2016-09-14 11:30:25 · 1873 阅读 · 0 评论 -
Hibernate高级查询方法(内含hibernate迫切左外连接检索策略)
投影查询——过滤部分字段返回的List集合元素为Object[]Query query = session.createQuery("select c.cname, c.csex from Customer c");List list = query.list();Iterator iter = list.iterator();Object[] objs = null;wh转载 2016-09-14 12:02:41 · 3133 阅读 · 0 评论 -
hibernate级联查询执行n+1次sqlt语句问题(内含解决办法,优化方式)
如果当SQL数据库中select语句数目过多,就会影响数据库的性能,如果需要查询n个Customer对象,那么必须执行n+1次select查询语句,下文就将为您讲解这个n+1次select查询问题。在Session的缓存中存放的是相互关联的对象图。默认情况下,当Hibernate从数据库中加载Customer对象时,会同时加载所有关联的Order对象。以Customer和Order类为例,原创 2016-09-14 11:43:42 · 3363 阅读 · 0 评论 -
hibernate使用left join一点感悟
班级表Class和学生表Student表示一对多关系。public class Class{private String id;private String classNumber;private Set students;}public class Student{private String id;private String studentNumber;p原创 2016-09-17 22:59:07 · 4240 阅读 · 0 评论 -
hibernate中1+n问题
hibernate中一对多关联,如果用的是eager的话,会执行1+n条sql我们可以看到hibernate的session中有上面这些查询方法,方法createCriteria不会产生1+n问题。但是用createQuery会产生1+n问题。注:1:上面的createCriteria就是一种解决办法。2:当然,自己写hql也是可以自己加left join fetch来原创 2016-09-17 23:38:25 · 371 阅读 · 0 评论 -
hibernate级联关系思考
有个班级表t_class,有个学生表t_student,有个课程表t_courset_class与t_student是一对多关系,t_student和t_course是多对多关系。用hql查询t_class的时候,会执行多少条sql语句?from Class用hql查询t_course的时候,会执行多少条sql语句?from Course原创 2016-09-19 18:01:17 · 347 阅读 · 0 评论 -
Hibernate中的1+N问题(带级联查询条件的情况)
1. Hibernate中的1+N问题描述 在多对一关系中,当我们需要查询多的一方对应的表的记录时,可以用一条sql语句就能完成操作。然而,在多的一方的实体类中的@ManyToOne标注的fetch的默认值是fetchType.EAGER,这时,hibernate除了发出查询多的一方对应的表的记录的sql语句外,还会发出n(多方记录数)条sql语句,这就是1+n问题原创 2016-09-21 11:51:10 · 2756 阅读 · 1 评论 -
hibernate中sql关联两个表,不用别名会出错
select a.id,a.name,b.id,b.sex from a,b where a.id=b.fkid上面这句sql在hibernate中b.id如果不用别名,那么查询出来,b.id=a.id,这是为什么?select a.id,a.name,b.id a bid,b.sex from a,b where a.id=b.fkid这个问题经常坑我!我在这里备注一原创 2016-11-11 19:21:47 · 1384 阅读 · 0 评论 -
hibernate实体对象的三种状态:自由状态,持久状态,游离状态.
转载至: http://www.cnblogs.com/newlooker/archive/2012/12/11/2813442.htmlhibernate实体对象的三种状态:自由状态,持久状态,游离状态. 自由态与游离态的区别:当一个持久化对象,脱离开Hibernate的缓存管理后,它就处于游离状态,游离对象和自由对象的最大区别在于,游离对象在数据库中可能转载 2016-12-23 19:43:32 · 318 阅读 · 0 评论 -
Java三大框架之——Hibernate中的三种数据持久状态和缓存机制
转载至:http://www.cnblogs.com/hcl22/p/6100191.htmlHibernate中的三种状态 瞬时状态:刚创建的对象还没有被Session持久化、缓存中不存在这个对象的数据并且数据库中没有这个对象对应的数据为瞬时状态这个时候是没有OID。 持久状态:对象经过Session持久化操作,缓存中存在这个对象的数据为持久状态并且数据库中转载 2016-12-23 19:54:25 · 2308 阅读 · 0 评论 -
hibernate自动建表设定字段类型为数据库中为timestamp类型
项目需要,字段应该设计为timestamp类型,但自动建表后总是被设置为datetimeGoogle后,在配置文件(Xxx.hbm.xml)中column添加sql-type="timestamp" default="CURRENT_TIMESTAMP"后自动创建表后字段被设定为timestamp,默认为当前时间。完整字段配置:待处理问题,如果是用注解配原创 2016-09-11 16:55:34 · 7549 阅读 · 0 评论 -
如何从hibernate官网下载各个版本的hibernate
1:打开浏览器,打开google,百度,360搜索,输入hibernate。进入官网,下面红色框中的就是官网:2:进入官网后,左边有个download链接:3:点进去后页面上,只显示了最新版本,但是懂点英文就可以看到这么一句话:4:上面红色框中大概意思就是更老的版本请在sourceforge和maven仓库查找,其实现在很多开元项目的资源都在sourcefo原创 2016-09-11 18:14:55 · 16528 阅读 · 1 评论 -
将具有关联关系的两个表通过hibernate从数据库中查出来后转成Json对象时报错解决:采用过滤器
将具有关联关系的两个表通过hibernate从数据库中查出来后转成Json对象时报错解决:采用过滤器 有一个A表,和B表,是one to many的关系。当我将B表从数据库中查出后. 通过:JSONArray responseJsonMsgs=JSONArray.fromObject(list);转成Json对象时报错: There is a cycle转载 2016-05-28 14:56:21 · 847 阅读 · 0 评论 -
hibernate级联更新(会先查询被关联的数据)
1:hibernate级联更新的时候,会先查询被关联的数据原理,验证是否可以级联更新,防止被关联的数据其实不存在,那么做更新操作是不合理的。2:hibernate做级联更新的时候,如果数据所有数据没有做任何变动,那么主关联的表会进行更新的sql例如:如果1-多级联更新,多方的数据没有任何变化,执行一条sql,如果多方List集合中的任何一个对象的数据变化了,多方的全部数原创 2016-06-11 19:12:08 · 2802 阅读 · 0 评论 -
hibernate FetchType理解
转载于:http://hi.baidu.com/silencefool/blog/item/bc3443efd66538d8b31cb1c2.htmlJPA定义实体之间的关系有如下几种: @OneToOne @ManyToOne @OneToMany @ManyToMany 在定义它们的时候可以通过fetch属性指定加载方式,有两个值: FetchType.转载 2016-06-14 16:03:19 · 345 阅读 · 0 评论 -
hibernate插入为空时,设置默认字段
今天用hibernate给字段生成默认值,要求如下:当字段为null时,为其生成默认值false,如果插入值不为空则保留该值。 /** * 是否删除 */ @Column(name="isDelete",columnDefinition="bit default 0 ",nullable=true) private Boolean isDelete;另外还需要配置:1.原创 2016-06-15 15:24:30 · 11233 阅读 · 0 评论 -
在Spring、Hibernate中使用Ehcache缓存
转载自:http://www.cnblogs.com/hoojo/archive/2012/07/12/2587941.html前一篇http://www.cnblogs.com/hoojo/archive/2012/07/12/2587556.html介绍了Ehcache整合Spring缓存,使用页面、对象缓存;这里将介绍在Hibernate中使用查询缓存、一级缓存、二级缓存,整合S转载 2016-06-16 14:25:13 · 392 阅读 · 0 评论 -
hibernate级联更新(自动识别哪些字段变化了)
hibernate做更新操作的时候,比如我有一个订单表order,一个乘机人表passenger,还有一个航班信息表flight,order与passenger一对多的关系,order与flight一对多的关系,0:如果查询出来没有做任何修改,进行更新hibernate不会做更新处理,不会执行sql语句。1:只更新order表中的数据hibernate首先会根据原创 2016-06-17 18:01:35 · 2195 阅读 · 0 评论 -
hibernate两个实体类映射数据库中的同一张表,保错
hibernate两个实体类映射数据库中的同一张表,保错查询的时候事务回滚,最后提示如下的错误: org.hibernate.MappingException: Unknown entity: com.smart.oo.entity.ResourceEntity原创 2016-05-20 18:34:40 · 6180 阅读 · 1 评论 -
Hibernate调用SQLserver存储过程
首先我们在sqlserver中写一个存储过程,也就是一个简单的查询。SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE my_procedureASBEGIN SET NOCOUNT ON; select * from t_gj_saleorder ENDGO根据自己表的情况,修改上面原创 2016-07-08 17:25:17 · 1246 阅读 · 1 评论 -
hibernate删除,和更新不存在的数据,返回0,不会报错
Hibernate通过hql的方式进行删除,和更新不存在的数据,返回0 int hs = session.createQuery(hql).executeUpdate(); public int executeHql(final String hql)/* */ throws SqlException/* */ {/*原创 2016-08-17 14:53:16 · 3717 阅读 · 0 评论 -
关于hibernate的查询,更新,需要先查询的问题
org.hibernate.Session session;session.update()方法;情景如下:一个order表和passenger、flight表分别是一对多的关系。查询一个order实体,设置为非lazy加载。所以查询了三次。将查询出来的对象进行修改几个字段,然后更新。更新前,又会去查询被关联的两个表,原创 2016-08-18 18:40:46 · 3329 阅读 · 0 评论 -
关于低版本的hibernate查询产生非常多的sql问题
1:低版本的hibernate,多表关联查询,比如一个以航司的订单表order,航段表flight,乘机人表passenger为例,订单表和航段表一对多关系,订单表和乘机人也是一对多关系。通过id去查询订单表,那么将执行3条sql语句。select * from order where id='order1';select * from flight where orderId='or原创 2016-09-09 10:39:53 · 808 阅读 · 0 评论