JPA経由でデータベースを操作するBeanを作成しようとしています。メソッドはすべて @Transactional(readOnly = false) で正しく注釈されています。これまでは、これはサーブレットからの呼び出しによって処理され、すべてうまく機能していました。
ここで、init メソッドでデータベース操作を行いたいと思います。
@Component
public class MyBean {
@PostConstruct
@Transactional(readOnly = false)
public void init() {
MyEntity myEntity = ...;
...
em.persist(myEntity);
}
(ケースは簡略化しています)。このように、「セッションがないか、セッションが閉じられていません」という例外が発生します。明らかに、トランザクションは実際の Bean からではなく、サーブレットのリクエストによって実行された場合にのみ正しく開始されます。Bean 自体から実行しても、どうすればこれを達成できますか?
ありがとう。