Spring integration 无法通过jpa出站网关插入
但我得到了以下错误:Spring integration 无法通过jpa出站网关插入,spring-integration,spring-integration-dsl,Spring Integration,Spring Integration Dsl,但我得到了以下错误: @Bean public IntegrationFlow reimInvJpaOutbound() { return IntegrationFlows .from("reimInvProcessChannel") .handle(reimJpaHandlers.reimStgInsertJpaHandler()) .log()
@Bean
public IntegrationFlow reimInvJpaOutbound() {
return IntegrationFlows
.from("reimInvProcessChannel")
.handle(reimJpaHandlers.reimStgInsertJpaHandler())
.log()
.get();
}
@Component
@Transactional
public class ReIMJpaHandlers {
Logger logger = LoggerFactory.getLogger(this.getClass());
@PersistenceContext
protected EntityManager entityManager;
@Autowired
ReIMHistInvHdrStgRepository histRepo;
@Autowired
ReIMInvHdrStgRepository stgRepo;
@Autowired
ReIMErrInvHdrStgRepository errRepo;
String responseQueryString = "select * from RMS16DEV.TSC_IM_DOC_HEAD_TEMP where error_ind != null";
@Bean
public JpaUpdatingOutboundEndpointSpec reimStgInsertJpaHandler() {
System.out.println("Writing to reim stg");
return Jpa
.updatingGateway(entityManager)
.entityClass(TSC_IM_DOC_HEAD_TEMP.class)
;
}
@Bean
public JpaPollingChannelAdapter reimStgResponseJpaInboundAdapter() {
return Jpa
.inboundAdapter(entityManager)
.nativeQuery(responseQueryString)
.maxResults(100)
.get();
}
}
你的
这对我来说无关紧要
@Component
@Transactional
public class ReIMJpaHandlers {
最后一个是bean,它存在于自己的生命周期中,它的所有方法调用都已经发生在ReimjPaHandler
上的@Transactional
之外
您需要考虑为TX代码配置TX管理器。句柄(ReimjPaultRels.ReimStgStuttJPAHANDLE())< /代码>:
假设您有一个名为transactionManager
的bean
类上的
@Transactional
应用于业务方法,而不是@Bean
方法,这些方法在我们创建Bean时只调用一次。谢谢Artem。很遗憾,我跳过了基础知识,但transactionManager似乎在spring引导中可用(自动配置)。此外,对于上面使用e->e.transactional的处理程序,我们如何处理建议(关于成功和失败)?您只需在transactional()
之后调用advice()
,所有建议都将在TX内调用。如果您需要其他方法,请在advice()
之后调用transactional()
。
@Component
@Transactional
public class ReIMJpaHandlers {
@Bean
public JpaUpdatingOutboundEndpointSpec reimStgInsertJpaHandler() {
.handle(reimJpaHandlers.reimStgInsertJpaHandler(), e -> e.transactional())