在我的Web服务应用程序中,我实现异步任务执行器以在数据库中插入对象。但是在第一次插入时,它会抛出异常。
org.springframework.orm.hibernate3.HibernateSystemException: A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance:
第二次刷新url时,对象成功插入数据库。
问题在于未插入对象的新请求的第一个实例。
XML文件
<bean id="applicationEventMulticaster" class="org.springframework.context.event.SimpleApplicationEventMulticaster">
<property name="taskExecutor">
<bean class="org.springframework.core.task.SimpleAsyncTaskExecutor"></bean>
</property>
</bean>
我使用org.springframework.core.task.SimpleAsyncTaskExecutor
/ org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor
,子表列表为clear()
,addall()
。但没有运气。
如果我评论任务执行程序标记,则会正确插入所有新请求对象。 在我的场景中,我必须实现异步任务执行器。
RptServiceImp.java
public class RptServiceImp{
@javax.annotation.Resource
private ApplicationEventPublisher applicationEventPublisher;
@Transactional
public void process(final RqstLoad rqstLoad ) {
try {
applicationEventPublisher.publishEvent(new LoggingEvt (this));
}catch(Exception e){
System.out.println("e:: "+e);
e.printStackTrace();
}
}
EventListoner.java
@Component
public class EventListener implements ApplicationListener<LoggingEvt > {
@Autowired
private EvntRptDAO evntRptDAO ;
@Override
public void onApplicationEvent(LoggingEvt evnt) {
final CustResource custRsrc = event.getCustResource();
try {
evntRpt er = new evntRpt (custRsrc);
evntRptDAO.saveAndFlush(er);
}
catch(Exception e){
System.out.println("e:: "+e);
e.printStackTrace();
}
}
}