2013-01-23 106 views
0

我嘗試加載收藏到我的對象(我不能使用FetchType.EAGER),但我得到以下異常:加載延遲集合在@Transactional方法

org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: Produkt.opinie, could not initialize proxy - no Session 

我不知道爲什麼,因爲我在@Transactional範圍內做:

@Service 
@Transactional 
public class ProduktService extends AbstractService implements IProduktService { 


    public Produkt findProduktById(Integer id) { 
     Produkt produkt = (Produkt) getSessionFactory().getCurrentSession() 
       .get(Produkt.class, id); 
      produkt.getOpinie(); 
     return produkt; 
    } 
} 
+0

,直至該層懶初始化應用程序配置支持? –

回答

0

可能有很多原因。因爲一旦擁有@Transactional註解並不全是需要的 - 您需要檢查事務管理器在您的Spring應用程序上下文中是否已正確配置。然後,您需要檢查您的應用程序是否具有適當的AOP支持,以便Spring可以自動啓動並完成使用@Transactional註釋的方法的事務。

您還需要一個合適的事務管理器,例如:在您使用Hibernate的情況下,您需要配置一個HibernateTransactionManager。

這也有利於調試由Spring發行實際的SQL語句/ Hibernate的檢查,如果你是真正的交易工作正常

Chapter 11 of the spring manual is a good reading for this topic.

+0

我可以成功加載Produkt對象,所以我認爲事務管理器是可以的。當我將produkt.getOpinie()添加到此方法時,會出現問題。 – user1091733