gpt4 book ai didi

java - 衍生线程中的 Spring 事务

转载 作者:行者123 更新时间:2023-11-30 04:57:59 25 4
gpt4 key购买 nike

我在现有系统上工作,需要将我的 Spring 事务管理器附加到从主作业线程生成的线程。我不断收到此异常

org.hibernate.HibernateException: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here
at org.springframework.orm.hibernate3.SpringSessionContext.currentSession(SpringSessionContext.java:63)
at org.hibernate.impl.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:687)
at parity.model.datamapping.RefreshTask.execute(RefreshTask.java:95)
at com.paritysys.tasks.ASyncTask$1.run(ASyncTask.java:48)
at java.lang.Thread.run(Thread.java:662)

我已经用事务注释注释了我能想到的所有内容,但我仍然无法清除此错误。

我错过了什么

我的方法

@TransactionAS400
@TransactionScores
public void refresh() {
ASyncTaskWorker worker = new ASyncTaskWorker() {
public void progress(double percentage, String message) {
logger.debug(String.format("%.2f - %s", percentage, message));
}

public void handleException(Throwable e) {
try {
status.allowUpdating(property.getSchema());
} catch (Exception b) {
// consume
}

logger.error("Failed to complete the refresh task", e);
}

public void done(boolean success) {
status.allowUpdating(property.getSchema());
logger.debug(String.format(
"Reset updating status to default for %s",
property.getSchema()));
}
};
RefreshTask refTask = ServiceProviderContext.find(RefreshTask.class);

refTask.init(property, worker);

ASyncTaskHandler.getInstance().add(refTask);
ASyncTaskHandler.getInstance().process();
}

最佳答案

我遇到了类似的情况,我有一个线程超出了 Spring 的方面范围。我的建议如下:定义并连接 org.springframework.transaction.support.TransactionTemplate 的实例,然后使用:

transactionTemplate.execute(new TransactionCallback() {
@Override
public Object doInTransaction(TransactionStatus status) {
//your code
}
}

我建议提前调用 transactionTemplate.setName("myTransactionsName") 来调试问题。

关于java - 衍生线程中的 Spring 事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7915265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com