- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 Spring MVC 制作游戏。我有一种获取游戏并更新的方法,但是当它更新时会出现错误,这是代码:
HomeController.class
@Transactional
@RequestMapping(value = "/partida/{idPartida}", method = RequestMethod.GET)
public String getPartida(@PathVariable("idPartida") long idPartida,
Model model) throws IOException {
Partida p = ServicioAplicacionPartida.getPartida(entityManager,
idPartida);
if (p.getJson() == null) {
p.inicializarPartida(entityManager);
ServicioAplicacionPartida.update(entityManager, p);
}
GameDAO.class
@Transactional
public static Partida update(EntityManager entityManager, Partida p) {
try {
Query q = entityManager.createNativeQuery("update Partida p SET p.json=:json where p.id=:id");
q.setParameter("json", p.getJson());
q.setParameter("id", p.getId());
q.executeUpdate();
return entityManager.find(Partida.class, p.getId());
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
执行“q.executeUdate()”行时出现错误,如下:
javax.persistence.PersistenceException:org.hibernate.exception.DataException:无法执行语句
这是服务器错误:
Estado HTTP 500 - 请求处理失败;嵌套异常是 org.springframework.transaction.TransactionSystemException: 无法提交 JPA 事务;嵌套异常是 javax.persistence.RollbackException:事务标记为 rollbackOnly
我可以做什么来修复它?
最佳答案
您将 Controller 和 DAO 方法注释为 @Transactional,这是不正确的,因为 @Transactional 可以继承到内部方法。通常事务应该从服务层开始。
尝试将这些参数添加到 @Transactional 注释中,并将其从 Controller 或 DAO 中删除。:
@Transactional(readOnly = false, propagation = Propagation.REQUIRED, rollbackFor=Exception.class)
关于javax.persistence.RollbackException : Transaction marked as rollbackOnly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32034292/
我使用以下源来试用@Transactional @Transactional(value = TxType.REQUIRED, rollbackOn = { SQLException.class })
我正在使用 Spring MVC 制作游戏。我有一种获取游戏并更新的方法,但是当它更新时会出现错误,这是代码: HomeController.class @Transactional @Request
我有服务类,并从我的服务类中定义的 plant() 方法调用方法 userPlanter.sow() 。 在执行服务类方法时遇到Transaction被标记为rollbackOnly异常。 请找到我的
我在我正在开发的一个应用程序中使用 Spring 和 Hibernate,但在处理事务时遇到了问题。 我有一个服务类,它从数据库加载一些实体,修改它们的一些值,然后(当一切都有效时)将这些更改提交到数
我在我正在处理的一个应用程序中使用 Spring 和 Hibernate,但在处理事务时遇到了问题。 我有一个服务类,它从数据库加载一些实体,修改它们的一些值,然后(当一切都有效时)将这些更改提交到数
首先我想说,我已经在 stackoverflow 上看到了针对我的案例的所有主题,但无论如何都无法解决我的问题。 我需要每天晚上运行计划任务来检查任务是否完成 - 我正在这样做: @Service @
我有一个应用程序正在通过 jpa 对各种数据库表进行大量写入。其中一个写入可能会导致乐观锁异常。如果抛出一个,这没什么大不了的,我希望事务的其余部分能够提交。 我通过以下方式查看了 spring 事务
我在我正在开发的一个应用程序中使用 Spring 和 Hibernate,但在处理事务时遇到了问题。 我有一个服务类,它从数据库加载一些实体,修改它们的一些值,然后(当一切都有效时)将这些更改提交到数
我是 JPA 的新手,在我的 Struts 2 项目中使用 eclipselink 作为 JPA 引擎。我在提交记录时遇到问题,因为它引发了异常: javax.persistence.Rollback
我是一名优秀的程序员,十分优秀!