![](/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.