プロジェクトで Spring Roo 1.2.3 を使用しています。エンティティ Stock が更新されたときに、別のエンティティ X の新しいレコードを作成する必要があります。私はこのようなことをします(データベースのトリガー更新に似ています)。
@PostPersist
@PostUpdate
private void triggerStock() {
Calendar fechaActual = Calendar.getInstance();
Long cantidad = this.getCantidadStock() - this.getCantidadAnterior();
StockHistory history = new StockHistory();
history.setArticulo(this.getArticulo());
history.setFecha(fechaActual);
history.setCantidad(cantidad);
history.persist();
}
アプリケーションがこのメソッドを終了すると、エラーがスローされ、新しい要素 X が保存されません。
しかし、最後の方法を次のように変更すると:
@PostPersist
@PostUpdate
private void triggerStock() {
Calendar fechaActual = Calendar.getInstance();
Long cantidad = this.getCantidadStock() - this.getCantidadAnterior();
StockHistory history = new StockHistory();
history.setArticulo(this.getArticulo());
history.setFecha(fechaActual);
history.setCantidad(cantidad);
EntityManagerFactory emf = entityManager().getEntityManagerFactory();
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
em.setFlushMode(FlushModeType.COMMIT);
em.persist(history);
em.getTransaction().commit();
em.close();
}
これは正常に機能しますが、これが機能するために新しい EntityManager が必要な理由を理解したいのですが?
ありがとう...