0

我尝试将集合加载到我的对象(我不能使用 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;
    }
}
4

1 回答 1

0

可能有很多原因。一次拥有@Transactional 注释并不是全部——您需要检查一个事务管理器是否已在您的spring 应用程序上下文中正确配置。然后,您需要检查您的应用程序是否具有适当的 AOP 支持,以便 Spring 可以自动启动和完成带有 @Transactional 注释的方法上的事务。

您还需要一个适当的事务管理器,例如:在您使用 Hibernate 的情况下,您需要配置一个 HibernateTransactionManager。

调试 Spring / Hibernate 发出的实际 SQL 语句以检查您的事务是否真的正常工作也很有帮助

spring 手册的第 11 章是该主题的好读物。

于 2013-01-23T05:02:03.967 回答