![](/img/trans.png)
[英]Hibernate lazy initialization - failed to lazily initialize a collection
[英]Lazy Initialization Exception on Initialize a Collection - JPA
我实现了一个简单的SpringMVC应用程序。 作为模型,我拥有的Person
和Event
都被映射到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
对象添加到Event
, SelectManyMenu
正确地预先选择添加的Person
对象。 但是,当我选择其他Person
对象并调用save
,就会出现异常。
首先,我认为我的save
方法不起作用。 但是它必须能正常工作,因为我能够分别保存Person
对象和Event
对象(两者之间没有Relationship
)。
为了正确映射,您应该将members
字段映射为@OneToMany(mappedBy = "event", fetch = ...)
,然后在您的Person
类中添加@ManyToOne Event event
。 您也可以通过阅读获取策略文档来确定需要使用哪种获取策略。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.