0

所以我有一个实体类,它包含一个带有 @ElementCollection 注释的属性,用于字符串列表。重点当然是持久化/检索字符串列表。

@ElementCollection
private List<String> listOfThings;

基于这个定义,Hibernate 创建了新的 db 表,但是当我为 listOfThings 赋值时:

record.setListOfThings(listOfStrings);

我可以看到有一个例外:

method threw 'org.hibernate.lazyinitializationexception' exception. cannot evaluate tostring() ...

因此,在得知我实际上需要listOfThings使用 EAGER 加载进行注释之后:

@ElementCollection(fetch = FetchType.EAGER)
private List<String> listOfThings;

我已经开始收到新的错误消息:

org.hibernate.SessionException: collections cannot be fetched by a stateless org.hibernate.internal.StatelessSessionImpl.initializeCollection(StatelessSessionImpl.java:299)

所以无论哪种方式,存储字符串列表都行不通。任何帮助表示赞赏。

4

1 回答 1

0

您需要初始化您的收藏,例如:

private List<String> listOfThings = new ArrayList<>();

对我来说工作得很好。

于 2018-11-14T12:02:56.627 回答