java-JTA EntityManager不能在存储过程调用中使用getTransaction()
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-JTA EntityManager不能在存储过程调用中使用getTransaction(),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1826字,纯文字阅读大概需要3分钟。
内容图文
我想通过调用存储过程在ejb方法中执行异步事务操作.当我调用methot时,出现以下错误:
java.lang.IllegalStateException: A JTA EntityManager cannot use getTransaction()
豆角,扁豆
@Stateless
public class FileSearchDAO {
private static Logger logger = LoggerFactory.getLogger(FileSearchDAO.class);
@PersistenceContext(unitName = "FileSearchPU")
private EntityManager entityManager;
@Asynchronous
public Future<String> saveFile(String fileNo, List<String> runningFiles) {
try {
entityManager.getTransaction().begin();
entityManager.createNativeQuery(
" BEGIN prc_save_file (:fileNo); END;")
.setParameter("fileNo", fileNo).executeUpdate();
entityManager.getTransaction().commit();
runningFiles.remove(fileNo);
return new AsyncResult<>(fileNo);
} catch (Exception ex) {
ex.printStackTrace();
return new AsyncResult<>(ex.getMessage());
}
}
persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
<persistence-unit name="FileSearchPU" transaction-type="JTA">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<jta-data-source>jdbc/FileSearchDS</jta-data-source>
<properties>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.transaction.jta.platform"
value="${hibernate.transaction.jta.platform}"/>
</properties>
</persistence-unit>
</persistence>
我没有任何实体类.我只想调用存储过程来更新某些表.
解决方法:
在JTA托管数据源容器中,容器以分布式方式处理事务,因此,例如,还可以处理应用程序外部的并发.
不能使用EntityManagers事务,因为它是本地事务,因此无法在应用程序外部进行处理.另请参阅this post以获取更多信息.
如果您需要交易,则应使用UserTransaction
@Resource
UserTransaction utx;
要使用它,请注释您的bean
@TransactionManagement(TransactionManagementType.BEAN)
并使用像
utx.begin();
...
utx.commit(); // utx.rollback();
内容总结
以上是互联网集市为您收集整理的java-JTA EntityManager不能在存储过程调用中使用getTransaction()全部内容,希望文章能够帮你解决java-JTA EntityManager不能在存储过程调用中使用getTransaction()所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。