java - 使用序列化深度克隆后 hibernate 延迟加载异常

标签 java spring hibernate spring-data spring-data-jpa

TLDR:我在我的项目中使用了 Spring-jpaHibernate,我的问题只是在我试图获得一个在我使用 org.apache.commons.lang3.SerializationUtils.clone() 方法深度克隆的实体中定义为 Lazy 的对象列表。

我得到以下异常

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)

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

代码:

@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();
  }
}

事件实体:

@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 属性没有帮助

最佳答案

自己想出来的

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

我用了Dozer Mapper对于深拷贝,也不异常(exception)了。

关于java - 使用序列化深度克隆后 hibernate 延迟加载异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47989554/

相关文章:

java - 监听器的代码执行顺序

java - 如何在 Spring 中显示下载文件名中的非法字符?

java - ORM 查询?或者更新数据库表信息应该更新到hibernate web应用程序中?

java - 使用 hibernate 插入数据库但出现 java.lang.reflect.InitationTargetException 异常

java - 程序没有给出预期的输出

java - 媒体播放器不会在按钮单击方法中播放声音

java - springboot 生成的 JSON 中缺少名称标签

java - 如何将 hibernate-search 与 JBoss datagrid 一起使用?

JavaFX 2.0 如何获得我的 GUI 生成器?哪个在旧的 JavaFX 中可用?

java - 无法使用 Java 配置 Autowiring SessionFactory