【问题标题】:Exception while trying to lazy loading entities with Karaf container尝试使用 Karaf 容器延迟加载实体时出现异常
【发布时间】:2014-04-21 10:13:48
【问题描述】:

我正在尝试使用延迟加载方法从数据库加载数据,但出现异常,我使用的是 Karaf 3.0.0、Hibernate 4.2.2.Final 和 JPA 2。 我也尝试在发出请求之前打开事务,但问题仍然存在:

EntityManager em = HibernateUtil.getEntityManager();
em.getTransaction().begin();
List<Position> list = taxiEntity.getPositionsList();
em.getTransaction().commit();
em.close();

例外是:

Exception in thread "AWT-EventQueue-0" org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: fr.pu.e
ntities.Toolbar.mainWindowList, could not initialize proxy - no Session
        at org.hibernate.collection.internal.AbstractPersistentCollection.throwL
azyInitializationException(AbstractPersistentCollection.java:566)
        at org.hibernate.collection.internal.AbstractPersistentCollection.withTe
mporarySessionIfNeeded(AbstractPersistentCollection.java:186)
        at org.hibernate.collection.internal.AbstractPersistentCollection.initia
lize(AbstractPersistentCollection.java:545)
        at org.hibernate.collection.internal.AbstractPersistentCollection.read(A
bstractPersistentCollection.java:124)
        at org.hibernate.collection.internal.PersistentBag.iterator(PersistentBa
g.java:266)
        at fr.actiasodielec.dsw802.toolbar.instantiator.MainToolbar.<init>(MainT
oolbar.java:54)
        at fr.actiasodielec.dsw802.mainwindow.MainWindowGui.initGUI(MainWindowGu
i.java:78)
        at fr.actiasodielec.dsw802.mainwindow.InitializationSW.process(Initializ
ationSW.java:112)

【问题讨论】:

    标签: hibernate jpa transactions karaf


    【解决方案1】:

    这是因为您在事务(会话)之外获取惰性集合。 你有两种方法:

    1. 急切地获取所需的集合 (link)
    2. 设置休眠属性(用于 SessionFactory):

      <prop key="hibernate.enable_lazy_load_no_trans">true</prop>
      

    【讨论】:

    • 非常感谢,第二个解决方案对我有用
    猜你喜欢
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多