org.hibernate.LazyInitializationException: coul...

编程入门 行业动态 更新时间:2024-10-20 13:52:06

org.<a href=https://www.elefans.com/category/jswz/34/1768527.html style=hibernate.LazyInitializationException: coul..."/>

org.hibernate.LazyInitializationException: coul...

为什么80%的码农都做不了架构师?>>>   

1.发生场景

    实体对象有对自身的映射。如

package com.amith.office.domain;import java.util.HashSet;
import java.util.Set;import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;import com.amith.query.QueryObject;/*** 文件名:ProcessCategory.java * 描述:流程分类 * 创建时间:2013-7-24 下午8:55:46 * 创建者:mluo * 版本号:v1.0*/
@Entity
@Table(name = "process_categorys")
public class ProcessCategory extends OfficeAggregateRootEntity {private static final long serialVersionUID = 1L;private String name;private ProcessCategory parent;private Set<ProcessCategory> children = new HashSet<ProcessCategory>();public ProcessCategory(String name) {this.name = name;}public ProcessCategory() {}public void createChild(ProcessCategory child) {child.setParent(this);children.add(child);this.update();}public static ProcessCategory getRoot() {return getRepository().getSingleResult(QueryObject.create(ProcessCategory.class).isNull("parent"));}public String getName() {return name;}public void setName(String name) {this.name = name;}@ManyToOne@JoinColumn(name = "parent_id")public ProcessCategory getParent() {return parent;}public void setParent(ProcessCategory parent) {this.parent = parent;}@OneToMany(cascade = CascadeType.ALL)@JoinTable(name = "process_category_middles", joinColumns = @JoinColumn(name = "parent_id"), inverseJoinColumns = @JoinColumn(name = "child_id"))public Set<ProcessCategory> getChildren() {return children;}public void setChildren(Set<ProcessCategory> children) {this.children = children;}}
当get某一个对象完了,session已关闭,此时如果调用对象的getChildren()就会出现这个错误。


2. 解决办法

    2.1、在相应的映射文件里禁止该类的延迟加载:设置lazy=false

    2.2、在session关闭之前取出需要的属性(@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER))

    2.3、使用openSessionInView


转载于:

更多推荐

org.hibernate.LazyInitializationException: coul...

本文发布于:2024-03-12 11:36:28,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1731416.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:hibernate   org   coul   LazyInitializationException

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!