gpt4 book ai didi

java - org.hibernate.HibernateException : Current transaction is not in progress

转载 作者:太空宇宙 更新时间:2023-11-04 15:06:26 25 4
gpt4 key购买 nike

您好,我正在尝试处理一些员工对象并保留在数据库中。 Service层可能会从DAO层得到异常。但我还需要处理其他员工记录。

请查看下面的类示例。这里类 A.processEmployees() 调用其他类 EmpHandler,后者调用 DAO。即使某个员工出现了一些异常,我也需要处理其他员工并将其保留在数据库中。但是,我收到的异常为 org.hibernate.HibernateException: Current transaction is not in Progress

@Transactional(readOnly = false, propagation = Propagation.REQUIRED)
Class A
{

public void processEmployees(List<Employee> empList)
{
for (Employee emp : empList)
new EmpHandler().processEmployee(emp);
}

}

最佳答案

您可以通过调用new方法创建EmpHandler。因此,Spring 框架和其他一些容器不处理该方法。您不应该自己创建 EmpHandler 对象。 Spring 框架应该创建这个对象。

您可以执行以下操作:

Class A
{

private IEmpHandler handler;

public void setEmpHandler(IEmpHandler handler) {
this.handler = handler;
}

@Transactional(readOnly = false, propagation = Propagation.REQUIRED)
public void processEmployees(List<Employee> empList)
{
for (Employee emp : empList)
handler.processEmployee(emp);
}
}

class EmpHandler implements IEmpHandler {
@Override
@Transactional(readOnly = false, propagation = Propagation.REQUIRED)
public void processEmployee(...) {
}
}

在您的 context.xml 中:

<bean id="handler" class="...EmpHandler"/>

<bean id="a" class = "...A">
<property name="handler" ref="handler"/>
</bean>

关于java - org.hibernate.HibernateException : Current transaction is not in progress,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21931299/

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