jpa2.1 StoredProcedureQuery事务计划

时间:2014-12-31 12:35:52

标签: java hibernate jpa jpa-2.1

在jpa 2.1中,api StoredProcedureQuery已被表示为调用JDBC CallableStatement。 问题是当我调用一个oracle过程,它执行一些插入操作时,在非事务方法中我不希望更改被提交但是看起来令人震惊,因为它似乎会提交更改。 它的问题是什么?

1 个答案:

答案 0 :(得分:0)

JDBC很简单;默认情况下启用autoCommit创建连接,这将立即提交您执行的每个语句。您可以手动将其关闭,然后您可以选择提交事务或手动将其回滚。这扩展到JPA(然后由EntityManager事务处理机制处理)并进一步扩展到应用程序容器。

如果您不希望提交更改,请不要提交事务。如果您正在使用某些事务处理中间件或JPA,请确保它不执行此操作。这很简单。

您的非事务性方法导致autoCommit连接被初始化或者它实际上不是非事务性的,但这取决于您的中间件和jpa提供程序实现。