繁体   English   中英

初始化集合时发生延迟初始化异常-JPA

[英]Lazy Initialization Exception on Initialize a Collection - JPA

我实现了一个简单的SpringMVC应用程序。 作为模型,我拥有的PersonEvent都被映射到H2 database

现在,我能够存储一个Person对象和一个Event对象。 但是,当我尝试将Person列表存储到Event对象时,总是会遇到异常:

无法延迟初始化集合,无法初始化代理-没有会话

到目前为止,我的方法:

@Entity
public class Event implements Persistable<Long> {

      private static final long serialVersionUID = 1L;

      @Id
      @GeneratedValue(strategy = GenerationType.AUTO)
      private Long id;

      private String eventName;

      @OneToMany(fetch = FetchType.EAGER)
      @ElementCollection(targetClass = Member.class)
      private List<Person> members = new ArrayList<>();
}

@Entity
public class Person implements Persistable<Long>{

      private static final long serialVersionUID = 1L;

      @Id
      @GeneratedValue(strategy = GenerationType.AUTO)
      private Long id;

      private String firstname;
      private String lastname;
}

目的是选择带有质数SelectManyMenu Person对象,并将其存储到事件的List<Person> members 当我通过SQL将某些Person对象添加到EventSelectManyMenu正确地预先选择添加的Person对象。 但是,当我选择其他Person对象并调用save ,就会出现异常。

首先,我认为我的save方法不起作用。 但是它必须能正常工作,因为我能够分别保存Person对象和Event对象(两者之间没有Relationship )。

为了正确映射,您应该将members字段映射为@OneToMany(mappedBy = "event", fetch = ...) ,然后在您的Person类中添加@ManyToOne Event event 您也可以通过阅读获取策略文档来确定需要使用哪种获取策略。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM