【问题标题】:javax.persistence.RollbackException: Transaction marked as rollbackOnlyjavax.persistence.RollbackException:事务标记为 rollbackOnly
【发布时间】:2015-11-09 03:21:37
【问题描述】:

我正在使用 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

我能做些什么来解决它?

【问题讨论】:

标签: java spring-mvc jpa


【解决方案1】:

您将控制器和DAO方法注释为@Transactional,这是不正确的,因为@Transactional可以继承到内部方法。通常事务应该从服务层开始。

尝试将这些参数添加到@Transactional 注释中,并将其从Controller 或DAO 中删除。:

@Transactional(readOnly = false, propagation = Propagation.REQUIRED, rollbackFor=Exception.class)

【讨论】:

  • 谢谢它的工作,现在不要在服务器上给我错误但不更新。我收到以下错误:javax.persistence.TransactionRequiredException: Executing an update/delete query
  • 你在配置文件中添加了transactionManager
  • 是的,我检查并添加了
猜你喜欢
  • 2014-10-08
  • 2012-07-15
  • 1970-01-01
  • 2020-07-30
  • 2022-07-16
  • 2019-04-09
  • 2020-05-11
  • 1970-01-01
相关资源
最近更新 更多