Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在事务的中间更新数据库,可能吗?_Java_Hibernate_Jpa_Transactions - Fatal编程技术网

Java 在事务的中间更新数据库,可能吗?

Java 在事务的中间更新数据库,可能吗?,java,hibernate,jpa,transactions,Java,Hibernate,Jpa,Transactions,上面的代码给出了javax.persistence.TransactionRequiredException异常 在事务的中间更新数据库,可能吗? 有什么建议吗 谢谢 A 我只是想知道这是否是一个运行时异常,它是由持久性提供程序在需要事务但未激活时引发的。需要事务,因为start方法被注释为事务性。为了消除该异常,您必须调查为什么在事务上下文之外调用该行 在(不同的)事务期间可能会进行数据库更新。取决于活动事务锁定的表和事务策略。但在这种情况下,似乎需要在输入start方法之前激活事务 使用J

上面的代码给出了javax.persistence.TransactionRequiredException异常

在事务的中间更新数据库,可能吗? 有什么建议吗

谢谢

A


我只是想知道这是否是一个运行时异常,它是由持久性提供程序在需要事务但未激活时引发的。需要事务,因为
start
方法被注释为事务性。为了消除该异常,您必须调查为什么在事务上下文之外调用该行

在(不同的)事务期间可能会进行数据库更新。取决于活动事务锁定的表和事务策略。但在这种情况下,似乎需要在输入
start
方法之前激活事务


使用JPA,您可以执行以下操作:

 
 @Transactional
 public void start() {
  ...
  ...
  int result = entityManager
                .createQuery("update Users set name=" + value + " where user.id=5").executeUpdate();
  .....

 }

注意-这接近伪代码,本例中缺少异常处理。

这是一个运行时异常,当需要事务但未激活时,持久性提供程序会引发该异常。需要事务,因为
start
方法被注释为事务性。为了消除该异常,您必须调查为什么在事务上下文之外调用该行

在(不同的)事务期间可能会进行数据库更新。取决于活动事务锁定的表和事务策略。但在这种情况下,似乎需要在输入
start
方法之前激活事务


使用JPA,您可以执行以下操作:

 
 @Transactional
 public void start() {
  ...
  ...
  int result = entityManager
                .createQuery("update Users set name=" + value + " where user.id=5").executeUpdate();
  .....

 }

注意-这接近伪代码,本例中缺少异常处理。

如何处理?请举个例子。。。谢谢,怎么办?请举个例子。。。谢谢