我实现了一个简单的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;
}
目标是选择具有素数Person
的{{1}}个对象,并将它们存储到事件的SelectManyMenu
。当我通过List<Person> members
向Person
添加一些Event
个对象而不是SQL
时,正确地预先选择添加的SelectManyMenu
个对象。但是当我选择一个额外的Person
对象并调用Person
时,就会出现异常。
首先我认为我的save
方法不起作用。但它必须正常工作,因为我能够分别保存save
个对象和Person
个对象(之间没有Event
)。
答案 0 :(得分:0)
要正确映射,您应将@OneToMany(mappedBy = "event", fetch = ...)
字段映射为@ManyToOne Event event
,并在Person
课程中添加tnsnames.ora
。您还可以通过阅读fetching strategies文档确定需要使用的提取策略。