最近在通过配置实体类的方式,正向自动扫描注解方式配置的hibernate类文件来生成数据库的方法搭建环境,遇到了许多问题。

  通过数据库配置hibernate的时候,大家都知道是在实体类对应生成的.hbm.xml文件中查看一对多和多对多的关系。

  当报failed to lazily initialize a collection of role异常的时候,往往是因为懒加载的问题导致的。

  可以在.hbm.xml文件中,将lazy="false",这样就不会报这个异常了。

  但是在自动扫描注解方式配置的hibernate类文件时,如何将懒加载改为false呢?

  只需要一句话,在注解上添加fetch=FetchType.EAGER便可

@OneToMany(mappedBy="user",fetch=FetchType.EAGER)

  举个栗子:

package com.maya.entity;

import java.util.ArrayList;
import java.util.List; import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table; import org.hibernate.annotations.GenericGenerator;
import org.springframework.context.annotation.Lazy; @Entity
@Table(name="t_user") public class User { private Integer id;
private String password;
private String ename;
private String sex;
//private String dept;
//private Dept dept;
private String tel;
private String description; private List<WarehouseMain> warehouseMainList=new ArrayList<WarehouseMain>();
private List<ReWarehouseMain> reWarehouseMainList=new ArrayList<ReWarehouseMain>();
private List<SellMain> sellMainList=new ArrayList<SellMain>();
private List<ReSellMain> reSellMainList=new ArrayList<ReSellMain>(); @Id
@GenericGenerator(name = "generator", strategy = "native")
@GeneratedValue(generator = "generator")
@Column(name = "id", length=11)
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Column(name = "password", length = 20)
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Column(name = "ename", length = 20)
public String getEname() {
return ename;
} public void setEname(String ename) {
this.ename = ename;
}
@Column(name = "sex", length = 10)
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
/*
@ManyToOne
@JoinColumn(name="dept_id")
public Dept getDept() {
return dept;
}
public void setDept(Dept dept) {
this.dept = dept;
}*/
@Column(name = "tel", length = 20)
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
@Column(name = "description", length = 100)
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
@OneToMany(mappedBy="user",fetch=FetchType.EAGER)
public List<WarehouseMain> getWarehouseMainList() {
return warehouseMainList;
}
public void setWarehouseMainList(List<WarehouseMain> warehouseMainList) {
this.warehouseMainList = warehouseMainList;
}
@OneToMany(mappedBy="user",fetch=FetchType.EAGER)
public List<ReWarehouseMain> getReWarehouseMainList() {
return reWarehouseMainList;
}
public void setReWarehouseMainList(List<ReWarehouseMain> reWarehouseMainList) {
this.reWarehouseMainList = reWarehouseMainList;
}
@OneToMany(mappedBy="user",fetch=FetchType.EAGER)
public List<SellMain> getSellMainList() {
return sellMainList;
}
public void setSellMainList(List<SellMain> sellMainList) {
this.sellMainList = sellMainList;
}
@OneToMany(mappedBy="user",fetch=FetchType.EAGER)
public List<ReSellMain> getReSellMainList() {
return reSellMainList;
}
public void setReSellMainList(List<ReSellMain> reSellMainList) {
this.reSellMainList = reSellMainList;
} }

这个实体类里,对应有四个一对多的外键关系,每一个一对多的关系查询的时候都涉及到一个懒加载,所以说,每一个OneToMany上都要添加fetch=FetchType.EAGER

最新文章

  1. windows 开机启动 CassiniDev(IIS替代软件)
  2. BZOJ1915: [Usaco2010 Open]奶牛的跳格子游戏
  3. CLR via C#(08)-操作符
  4. svn服务端配置
  5. javascript实现快速排序和二分法查找
  6. request的用法
  7. js知识简单归纳
  8. oracle还原数据库及遇到的问题
  9. 在Eclipse中新建Maven项目
  10. 基于 Android 的 3D 视频样本代码
  11. 在oracle中,group by后将字符拼接,以及自定义排序
  12. 解决Error: ENOENT: no such file or directory, scandir &#39;D:\IdeaWork\code-front-jet\node_modules\.npminstall\node-sass\3.7.0\node-sass\vendor&#39;
  13. 安装ruby&amp;gem
  14. R基础学习(三)-- 简单练习(shiny+mysql+barplot)
  15. linux 内存分页
  16. php请求页面将返回的页面发送email
  17. 使用Thumbnailator处理gif图片时遇到java.lang.ArrayIndexOutOfBoundsException: 4096异常处理
  18. Vim自动补全插件----YouCompleteMe安装与配置
  19. 如何配置开源中国Maven库以加快依赖包下载速度
  20. HDU 6397(2018多校第8场1001) Character Encoding 容斥

热门文章

  1. 对比java和python对比
  2. 如何使用Java代码给图片增加倒影效果
  3. Android(java)学习笔记126:判断SD卡状态和SD卡容量
  4. 2018.2.11 JS的定时器制作
  5. Java执行系统命令工具类(JDK自带功能)
  6. LeetCode 53题 最大子序和 -- JavaScript
  7. JavaScript -- DOM事件
  8. 第三单元OO总结
  9. 【思维题 并查集 图论】bzoj1576: [Usaco2009 Jan]安全路经Travel
  10. 第3-5课 填充左侧菜单/品牌的添加 Thinkphp5商城第四季