2013-01-23 69 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