我尝试将集合加载到我的对象(我不能使用FetchType.EAGER),但我得到以下异常:
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 / Hibernate发出的实际SQL语句来检查你的事务是否真的正常工作也很有帮助
Chapter 11 of the spring manual is a good reading for this topic.