Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.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 JPA annotation@TransactionAttribute(TransactionAttribute.NOT_受支持)未按预期工作_Java - Fatal编程技术网

Java JPA annotation@TransactionAttribute(TransactionAttribute.NOT_受支持)未按预期工作

Java JPA annotation@TransactionAttribute(TransactionAttribute.NOT_受支持)未按预期工作,java,Java,使用Hibernate在JBoss5.1上运行J2EE应用程序。我需要调用quartz调度器中的一些方法,这些方法使用来自企业bean的显式数据库连接。当前获取有关在事务中调用“不允许提交”的错误 我希望在bean方法中添加@TransactionAttributeTransactionAttributeType.NOT_-SUPPORTED注释将允许我调用quartz api,但仍然会得到相同的异常。我是否误解了这个注释的意思,或者是发生了其他事情 2014-06-23 17:43:41,18

使用Hibernate在JBoss5.1上运行J2EE应用程序。我需要调用quartz调度器中的一些方法,这些方法使用来自企业bean的显式数据库连接。当前获取有关在事务中调用“不允许提交”的错误

我希望在bean方法中添加@TransactionAttributeTransactionAttributeType.NOT_-SUPPORTED注释将允许我调用quartz api,但仍然会得到相同的异常。我是否误解了这个注释的意思,或者是发生了其他事情

2014-06-23 17:43:41,184 ERROR [http-0.0.0.0-8443-4] org.quartz.JobPersistenceException: Couldn't commit jdbc connection. You cannot commit during a managed transaction! [See nested exception: java.sql.SQLException: You cannot commit during a managed transaction!]
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.commitConnection(JobStoreSupport.java:3661)
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3799)
    at org.quartz.impl.jdbcjobstore.JobStoreTX.executeInLock(JobStoreTX.java:93)
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeWithoutLock(JobStoreSupport.java:3703)
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.checkExists(JobStoreSupport.java:1897)
    at org.quartz.core.QuartzScheduler.checkExists(QuartzScheduler.java:1491)
    at org.quartz.impl.StdScheduler.checkExists(StdScheduler.java:555)
更多数据:

1如果我从没有注释的非托管类调用我的托管bean方法,那么我会得到相同的异常事务

2如果我从带有注释的非托管类调用托管bean方法,那么我不会得到异常no transaction created

3如果我从另一个托管bean或从它本身调用我的托管bean方法,那么无论是否存在注释事务,我都会得到异常


因此,注释似乎确实阻止创建新的事务,但它似乎没有挂起已经存在的事务,或者可能我完全弄错了。

注释用于容器管理的事务。容器管理的事务不能由bean划分提交/回滚。不确定您在说什么。我希望容器挂起此方法的事务,仅此而已。当前收到一个关于在事务中调用“不允许提交”的错误。您在提交事务时遇到异常。@TransactionAttribute的使用意味着您正在使用CMT容器管理的事务。问题是,当您使用CMT时,容器将提交事务,而您不允许提交它。请阅读此-,并获得一些理解。但是注释的目的不是告诉容器以该方法挂起事务吗?