您好我正在尝试处理一些Employees对象并坚持使用数据库。服务层可能会从DAO层获得异常。但我仍然需要处理其他员工记录。
请查看下面的课程示例。这里,Class A.processEmployees()调用其他调用DAO的类EmpHandler。即使员工有一些例外,我也需要处理其他员工并在数据库中保留。但是,我得到的异常为 org.hibernate.HibernateException:当前事务未在进行中
@Transactional(readOnly = false, propagation = Propagation.REQUIRED)
Class A
{
public void processEmployees(List<Employee> empList)
{
for (Employee emp : empList)
new EmpHandler().processEmployee(emp);
}
}
答案 0 :(得分:0)
通过调用new
方法创建EmpHandler。因此,Spring Framework和其他一些容器无法处理这些方法。您不应该自己创建EmpHandler
对象。 Spring Framework应该创建这个对象。
您可以执行以下操作:
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>