使用序列化深度克隆后休眠延迟加载异常

Ron*_*dur 5 java spring hibernate spring-data spring-data-jpa

TLDR:我正在使用Spring-jpaHibernate在我的项目中,只有在我尝试获取Lazy我使用方法深度克隆的实体中定义的对象列表后,我的问题才发生org.apache.commons.lang3.SerializationUtils.clone()

我得到以下异常

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)
Run Code Online (Sandbox Code Playgroud)

在我尝试获取对象中users定义的所有内容的列表之后lazyduplicateEvent

代码 :

@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();
  }
}
Run Code Online (Sandbox Code Playgroud)

事件实体:

@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() {

  }
}
Run Code Online (Sandbox Code Playgroud)

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

Ron*_*dur 4

我自己想出来了

而不是深复制org.apache.commons.lang3.SerializationUtils.clone()

我使用Dozer Mapper进行深度复制,现在也不例外。