【发布时间】:2015-09-11 17:16:57
【问题描述】:
在我的应用程序中,客户端有一个持久化实体的副本,存储在一个集合中,以便最大限度地减少数据库事务。由于它是一个多用户系统,另一个用户可能正在查看同一个对象,比如与您一起查看任务实体。假设第二个用户在您查看任务时从数据库中删除了该任务,并且您决定也将其删除。当您尝试删除它时,我收到 StackOverflowError,当然不会执行删除(因为任务已被删除)。有没有办法使用数据库、jpa 或休眠异常来捕获这个?我正在使用 entitymanager obects 来删除实体。
public <T> void remove(T entity) throws PersistenceException{
log.debug("Removing entity of type " + entity.getClass().getName());
// TODO add exception handling
EntityManager em = createEntityManager();
em.getTransaction().begin();
em.remove(em.merge(entity));
em.getTransaction().commit();
em.close();
}
【问题讨论】: