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())