Spring boot 为MyBatis定制JPapResistingStateMachineInterceptor

Spring boot 为MyBatis定制JPapResistingStateMachineInterceptor,spring-boot,spring-statemachine,Spring Boot,Spring Statemachine,我正在做一个项目,用持久性定制Spring状态机,以使用MyBatis而不是JPA。我创建了一个类似于JpaPersistingStateMachineInterceptor的类,因为这是对状态机数据库进行读/写操作的关键类。我注意到,preStateChange方法被调用了两次。这是因为StateMachineInterceptorList中有以下代码: public void preStateChange(State<S, E> state, Message<E> m

我正在做一个项目,用持久性定制Spring状态机,以使用MyBatis而不是JPA。我创建了一个类似于JpaPersistingStateMachineInterceptor的类,因为这是对状态机数据库进行读/写操作的关键类。我注意到,
preStateChange
方法被调用了两次。这是因为
StateMachineInterceptorList
中有以下代码:

public void preStateChange(State<S, E> state, Message<E> message, Transition<S, E> transition,
            StateMachine<S, E> stateMachine, StateMachine<S, E> rootStateMachine) {
        for (StateMachineInterceptor<S, E> interceptor : interceptors) {
            interceptor.preStateChange(state, message, transition, stateMachine);
            interceptor.preStateChange(state, message, transition, stateMachine, rootStateMachine);
        }
    }
public void preStateChange(状态、消息消息、转换、,
StateMachine(状态机,状态机根状态机){
for(StateMachineInterceptor拦截器:拦截器){
预状态更改(状态、消息、转换、状态机);
preStateChange(状态、消息、转换、状态机、根状态机);
}
}
因此,在
preStateChange
中执行的任何数据库更新都会执行两次。如何正确处理这一点,使数据库更新只进行一次?这件事我已经坚持了一个星期了。任何帮助都是非常感激的