2017-01-17 6 views
0

私はrabbitmqからのメッセージを消費したいと思います。このプロセスの一環として、私はバネデータリポジトリからエンティティを読み取りました。私はこのエンティティの遅延初期化フィールドにアクセスしようとするとき、私は得る:ここで@RabbitListenerメソッドでHibernateセッションを作成するにはどうすればよいですか?

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(); 
} 

私は、トランザクションを強制することによって、セッションを作成しようとしましたが、それは動作しません。 。

+0

問題は、エンティティをロードしていますが、いくつかの関連のエンティティを使用しようとしていると、それがLAZYの方法でフェッチされるので、初期化されていないという事実に関係しているようです。あなたはリポジトリとアカウントエンティティのいくつかのコードを投稿することがありますか?または、あなたは 'Hibernate.initialize(repository.find(subscription.getId()))を実行するかもしれません。getAccount())' –

答えて

0

@Transactionalに適切なJpaTransactionManagerのBeanリファレンスを設定する必要があります。

関連する問題