首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用序列化实现深度克隆后的hibernate延迟加载异常

使用序列化实现深度克隆后的hibernate延迟加载异常
EN

Stack Overflow用户
提问于 2017-12-27 09:28:15
回答 1查看 1.1K关注 0票数 4

TLDR: --在我的项目中使用Spring-jpaHibernate,只有在我试图在使用org.apache.commons.lang3.SerializationUtils.clone()方法深入克隆的实体中获得定义为Lazy的对象列表之后,才会出现问题。

我得到以下异常

代码语言:javascript
运行
复制
Exception in thread "main" org.hibernate.LazyInitializationException: could not initialize proxy - no Session
    at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:167)
    at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:215)
    at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:190)
    at sei.persistence.wf.entities.Element_$$_jvstc68_47.getNote(Element_$$_jvstc68_47.java)
    at JSON_to_XML.createBpmnRepresantation(JSON_to_XML.java:139)
    at JSON_to_XML.main(JSON_to_XML.java:84)

在尝试获取定义为users对象中的lazy的所有duplicateEvent的列表之后

代码:

代码语言:javascript
运行
复制
@Service
public class EventService {

@Autowired
EventRepository eventRepository;

 public List<User> duplicateEvent(Long id) {
    Event event =  eventRepository.findById(id);
    Event duplicateEvent = SerializationUtils.clone(event);

    return duplicateEvent.getUsers();
  }
}

事件实体:

代码语言:javascript
运行
复制
@Entity
@Table(name="events")
public class Event implements Serializable{

 @Id
 @GeneratedValue(strategy = GenerationType.AUTO)
 @Column(name="id")
 private Integer id;

 @OneToMany(fetch= FetchType.LAZY, mappedBy="event")
 privare List<User> users = new ArrayList();

  public List<User> getUsers() {
    return this.users;
  }

  public Integer getId() {
    return id;
  }

  public void setId(Integer id) {
    this.id = id;
  }

  public Event() {

  }
}

p.s:spring.jpa.hibernate.enable_lazy_load_no_trans=true财产没有帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-30 19:23:33

我自己想出来的

而不是使用org.apache.commons.lang3.SerializationUtils.clone()进行深度复制

我使用Dozer Mapper进行深度复制,再也没有例外了。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47989554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档