如何在 @RabbitListener 方法中创建 Hibernate Session?
How can i create a Hibernate Session in a @RabbitListener Method?
我想使用来自 rabbitmq 的消息。作为这个过程的一部分,我从 spring 数据存储库中读取了一个实体。当我尝试访问该实体的延迟初始化字段时,我得到:
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
这是我的听众:
@RabbitListener(bindings = {
@QueueBinding(
value = @Queue(value = EVENT_QUEUE, durable = "true"),
exchange = @Exchange(value = EventConstants.EVENT_EXCHANGE_NAME, type = EventConstants.EVENT_EXCHANGE_TYPE)
})
@Transactional
protected void handleSubscriptionCreated(Subscription subscription) {
// just sample code
repository.find(subscription.getId())).getAccount();
}
我试图通过强制执行事务来创建会话,但这不起作用。
您必须配置 @Transactional
以获得适当的 JpaTransactionManager
bean 引用。
看起来 @Transactional
侦听器方法上的注释仅在侦听器方法为 public 时才有效。
我想使用来自 rabbitmq 的消息。作为这个过程的一部分,我从 spring 数据存储库中读取了一个实体。当我尝试访问该实体的延迟初始化字段时,我得到:
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
这是我的听众:
@RabbitListener(bindings = {
@QueueBinding(
value = @Queue(value = EVENT_QUEUE, durable = "true"),
exchange = @Exchange(value = EventConstants.EVENT_EXCHANGE_NAME, type = EventConstants.EVENT_EXCHANGE_TYPE)
})
@Transactional
protected void handleSubscriptionCreated(Subscription subscription) {
// just sample code
repository.find(subscription.getId())).getAccount();
}
我试图通过强制执行事务来创建会话,但这不起作用。
您必须配置 @Transactional
以获得适当的 JpaTransactionManager
bean 引用。
看起来 @Transactional
侦听器方法上的注释仅在侦听器方法为 public 时才有效。