我正在
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)
at com.mcruiseon.server.hibernate.ReadOnlyOperations.flush(ReadOnlyOperations.java:118)
引发该异常的代码。我正在从无限运行的线程调用刷新,直到有要刷新的数据为止。
public void flush(Object dataStore) throws DidNotSaveRequestSomeRandomError {
Transaction txD;
Session session;
session = currentSession();
// Below Line 118
txD = session.beginTransaction();
txD.begin() ;
session.saveOrUpdate(dataStore);
try {
txD.commit();
while(!txD.wasCommitted()) ;
} catch (ConstraintViolationException e) {
txD.rollback() ;
throw new DidNotSaveRequestSomeRandomError(dataStore, feedbackManager);
} catch (TransactionException e) {
txD.rollback() ;
} finally {
// session.flush();
txD = null;
session.close();
}
// mySession.clear();
}
编辑:我正在调用独立线程中的刷新,因为数据存储列表包含数据。从我看来,它是对刷新的同步操作调用,因此理想情况下,刷新应在事务完成之前不返回。我希望这种方式是我最不希望看到的。由于它是一个独立的线程来完成其工作,因此我所关心的只是刷新操作是同步操作。现在我的问题是,txD.commit是异步操作吗?它在该交易有机会完成之前返回吗?如果是,在事务完成之前是否有办法提交到“等待”?
public void run() {
Object dataStore = null;
while (true) {
try {
synchronized (flushQ) {
if (flushQ.isEmpty())
flushQ.wait();
if (flushQ.isEmpty()) {
continue;
}
dataStore = flushQ.removeFirst();
if (dataStore == null) {
continue;
}
}
try {
flush(dataStore);
} catch (DidNotSaveRequestSomeRandomError e) {
e.printStackTrace();
log.fatal(e);
}
} catch (HibernateException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
编辑2 :(while(!txD.wasCommitted()) ;
在上面的代码中)添加了,但我还是很害怕nested transactions not supported
。实际上,由于此异常,表也未将记录写入。桌子的类型有关系吗?我所有的桌子都有INNODB吗?
在调用此方法之前,您可能已经开始了事务。
要么这应该是封闭事务的一部分,所以您不应该启动另一事务。否则它不应该是封闭事务的一部分,因此您应该打开一个新会话和一个新事务,而不要使用当前会话。
[root@PPWFMD509bin]#./线程“main”java.lang.UnsupportedClassVersionError:org/apache/cassandra/cli/CliMain:Unsupported major中的cassandra cli异常。在java.lang.ClassLoader的51.0次要版本。java.lang.ClassLoader.defineCla
据我所知,当您尝试在提交前一个事务之前开始一个事务时,会发生这种异常。然而,我不明白为什么在我的情况下会有这种例外。 我有一个Web应用程序与以下servlet: 这是我的Compte对象: 这是我的DAO的接口: 这就是它的实施: 另外,这是我的Spring配置: 关联的应用程序。属性文件包含以下行: 最后,我有以下servlet过滤器,从这里开始事务: 这是在网络上映射的。如下所示的xml文件
问题内容: JTA为什么不支持嵌套事务?是因为实现它们的复杂性(我对此表示怀疑)还是某些设计原则? 问题答案: (正如@Piotr Nowicki指出的那样,JTA 确实 允许嵌套事务,但这不是强制性的可选操作。) 为什么?这是无法确定地回答的问题之一,除非您是做出决定时“在房间里”的人之一。 将嵌套事务作为规范的一部分包括在内可能是固有的复杂性。或当时明显的复杂性;即他们不知道他们知道如何做一个
我使用Flink SQL计算基于事件时间的窗口分析。在我的数据源每天晚上空闲之前,一切都正常工作,之后直到第二天数据再次开始流动时才产生最后一分钟的结果。 我已尝试将<code>设置为table.exec.source。空闲超时,但没有帮助。我能做什么?
基本上我是超级新手,开始在IT公司实习。我用Xamarin安装了VS。我面临的问题非常令人沮丧。因此,即使创建空项目,我也无法编译它,并出现如下错误: 严重性代码描述项目文件行抑制状态警告主要版本52比51更新,这是该编译器支持的最高主要版本。 我搜索了谷歌,问了这么多人,仍然没有解决我的问题。如果有人能通过skype或teamwiever帮助我,我会非常感激。我的skype: toniterda
从github复制粘贴maven cucumber报告的代码后,报告不会在目标文件夹中生成。我不确定丢了什么。我试着用Runner类和MVN控制台运行,结果都没有在目标文件夹中生成报告 POM文件 和这个我的跑步者文件 我运行了