【发布时间】:2015-05-30 21:17:19
【问题描述】:
我有一个观察事件并保存记录的无状态bean:
@Stateless
public class Manager {
@Inject
Repository repository;
Manager() {}
@Inject
Manager(Repository repository) {
this.repository = repository;
}
public void EventHandler(@Observes MyEvent myEvent) {
save(event.obj);
}
private save(Object object) {
repository.add(object);
}
}
我的仓库是这样的:
@Stateless
public class Repository {
@PersistenceContext
EntityManager em;
Repository() {}
public void add(Object object) {
em.persist(object);
// em.flush(); <---
}
}
除非我取消注释该行,否则它不起作用 我不明白的是为什么我需要冲洗!事务不应该自动提交吗?
难道我有一个 EJB 容器,而由 Observes 启动的 cdi 事务实际上从未结束,而是做了一些奇怪的事情?还是因为不了解 EJB 而结束但不提交?
【问题讨论】:
-
您可能稍后会回滚事务。有什么例外吗?
-
嗯嗯有趣的一点。我没有看到它在日志中回滚,但有人吞下该异常的可能性很小......我可能需要对此进行调查。
标签: java hibernate jakarta-ee jpa ejb