我正在使用带有SPRING和mySQL的JPA,并且在删除实体时遇到了问题...
我这样做:
@PersistenceContext
private EntityManager em;
... @Transactional
public void delete(Long id) {
em.flush();
OwnerEntity e = em.getReference(Entity.class, Long.valueOf(id));
if (e == null)
throw new Exception(Status.SERVER_ERROR);
em.remove(e);
em.flush();
}
答案 0 :(得分:3)
嗯,错误是自我解释:你应该在一个事务中运行你的JPA代码,看起来你不是,因此TransactionRequiredException
。来自它的javadoc:
当需要事务但未处于活动状态时,由持久性提供程序抛出。
有许多方法可以处理Spring的事务,其中一种方法是使用@Transactional
注释您的服务(假设您的Spring配置中有<tx:annotation-driven/>
)。
由于您没有告诉我们您使用Spring的方式,我建议您查看Chapter 9. Transaction management以获取更多详细信息。