非法访问加载集合(hibernate.LazyInitializationException)

时间:2010-12-01 18:22:42

标签: jpa

我正在使用JPA和Hibernate持久性提供程序。

我有一对多的映射,我用过

@OneToMany(mappedBy = "mSearchPreference", cascade = CascadeType.ALL, fetch=FetchType.EAGER)

我可以在控制台上看到一对多的SQL语句,尽管我得到了异常

illegal access to loading collection  (hibernate.LazyInitializationException)
org.hibernate.LazyInitializationException: illegal access to loading collection
    at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:341)
    at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:86)
    at org.hibernate.collection.AbstractPersistentCollection.readElementExistence(AbstractPersistentCollection.java:142)
    at org.hibernate.collection.PersistentSet.add(PersistentSet.java:187)

有人可以帮我解决我需要做的其他安排吗?

1 个答案:

答案 0 :(得分:0)

这通常意味着在尝试访问新实体时Hibernate会话已经关闭。解决此问题的两个选项是:

  • 查看所有模型图并在需要时设置适当的EAGER提取类型。
  • 设置扩展持久性内容:@PersistenceContext(type = PersistenceContextType.EXTENDED)