我正在一个项目中使用 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 才能工作?
谢谢...