初始化集合的延迟初始化异常 - JPA

时间:2018-01-14 19:06:45

标签: java hibernate spring-mvc jpa primefaces

我实现了一个简单的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;
}

目标是选择具有素数Person的{​​{1}}个对象,并将它们存储到事件的SelectManyMenu。当我通过List<Person> membersPerson添加一些Event个对象而不是SQL时,正确地预先选择添加的SelectManyMenu个对象。但是当我选择一个额外的Person对象并调用Person时,就会出现异常。

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

1 个答案:

答案 0 :(得分:0)

要正确映射,您应将@OneToMany(mappedBy = "event", fetch = ...)字段映射为@ManyToOne Event event,并在Person课程中添加tnsnames.ora。您还可以通过阅读fetching strategies文档确定需要使用的提取策略。