Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.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 Hibernate 4.1.8.最终支持事务:是还是否?_Java_Mysql_Hibernate - Fatal编程技术网

Java Hibernate 4.1.8.最终支持事务:是还是否?

Java Hibernate 4.1.8.最终支持事务:是还是否?,java,mysql,hibernate,Java,Mysql,Hibernate,我正在使用Hibernate(4.1.8.FINAL)、MySQL(InnoDB),并且在保存多个实体时遇到问题 根据Hibernate文档,应支持批处理,但我遇到以下异常: org.hibernate.TransactionException: nested transactions not supported at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.begin(AbstractTransactio

我正在使用Hibernate(4.1.8.FINAL)、MySQL(InnoDB),并且在保存多个实体时遇到问题

根据Hibernate文档,应支持批处理,但我遇到以下异常:

org.hibernate.TransactionException: nested transactions not supported
    at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.begin(AbstractTransactionImpl.java:152)
    at org.hibernate.internal.SessionImpl.beginTransaction(SessionImpl.java:1395)
    ...
以下是我编写的代码(类EntryDaoImpl.java):

如果只更新一个实体,也会发生异常。我还尝试使用openSession()而不是getCurrentSession(),但出现以下异常:

org.hibernate.HibernateException: Illegal attempt to associate a collection with two open sessions
    at org.hibernate.collection.internal.AbstractPersistentCollection.setCurrentSession(AbstractPersistentCollection.java:638)
    at org.hibernate.event.internal.OnUpdateVisitor.processCollection(OnUpdateVisitor.java:65) 
如果我不使用事务逻辑,那么它就可以工作。在搜索引擎的研究过程中,我看到许多开发人员告诉我Hibernate根本不支持事务。不确定这句话是否过时。迷茫


所以我的问题是:Hibernate是否支持事务(如文档中所述)?和/或你能告诉我我的代码有什么问题吗?谢谢:-)

您正在使用声明性事务(@transaction)和程序性事务

tx = session.beginTransaction();
for (final T entity : entities) {
    session.saveOrUpdate(entity);
}
tx.commit();
由于在同一代码中使用这两个事务,Hibernate会抱怨

org.hibernate.TransactionException: nested transactions not supported
删除类顶部的
事务
注释,它应该可以工作,否则删除
开始事务
提交


希望有帮助。

您使用的是声明性事务(@transaction)和程序性事务

tx = session.beginTransaction();
for (final T entity : entities) {
    session.saveOrUpdate(entity);
}
tx.commit();
由于在同一代码中使用这两个事务,Hibernate会抱怨

org.hibernate.TransactionException: nested transactions not supported
删除类顶部的
事务
注释,它应该可以工作,否则删除
开始事务
提交


希望有帮助。

@Transaction注释来自哪里?您是否使用spring并表示@Transactional?还是另一个声明性事务系统?如果是,让它处理事务-异常消息表示您试图在另一个(“嵌套”)内部开始事务。很可能是因为您在hibernate会话中手动打开了一个事务,而声明性事务系统已经打开了一个。@transaction注释来自哪里?您是否使用spring并表示@Transactional?还是另一个声明性事务系统?如果是,让它处理事务-异常消息表示您试图在另一个(“嵌套”)内部开始事务。很可能是因为您在hibernate会话中手动打开了一个事务,而声明性事务系统已经打开了一个。谢谢您的回复。我正在使用事务性注释(不知道为什么使用事务性注释,似乎我在代码缩小过程中删除了“al”),您的提示解决了这个问题:我不能将事务性注释和beginTransaction()结合起来。谢谢您的回复。我正在使用事务性注释(不知道为什么使用事务性注释,似乎我在代码缩小过程中删除了“al”),您的提示解决了这个问题:我不能将事务性注释和beginTransaction()结合起来