Java jooq RecordListener从不捕获updateEnd和updateStart事件

Java jooq RecordListener从不捕获updateEnd和updateStart事件,java,jooq,audit,Java,Jooq,Audit,使用JOOQ 3.9.6,我尝试实现如下记录侦听器: public class AuditListener extends DefaultRecordListener { .... @Override public void insertEnd(RecordContext ctx) { // OK we enter here when inserting a record } ... @Override public

使用JOOQ 3.9.6,我尝试实现如下记录侦听器:

public class AuditListener extends DefaultRecordListener {

    ....

    @Override
    public void insertEnd(RecordContext ctx) {
        // OK we enter here when inserting a record
    }

    ...

    @Override
    public void updateEnd(RecordContext ctx) {
        // never enter this method when we update a record
    }
}
我们使用更新通过DSLContext更新记录。。。并执行更新。AuditListener从未捕获updateEnd事件

以下是用于更新记录的存储库:

@Component
public class JooqMyentityRepository extends AbstractJooqRespository<MyentityRecord, Myentity> implements MyentityRepository {

    public JooqMyentityRepository() {
        super(Myentity.class, MYENTITY);
    }

    @Override
    public Myentity findById(Integer myentityId) {
        return dsl.select(MYENTITY.fields()).from(MYENTITY).where(MYENTITY.ID.eq((myentityId))).fetchOneInto(Myentity.class);
    }

    @Override
    @Transactional
    public void update(Myentity myentity) {
        dsl.update(MYENTITY)
            .set(MYENTITY.NAME, myentity.getName())
            .set(MYENTITY.AREA_ID, myentity.getAreaId())
            .set(MYENTITY.ACTIVE, myentity.getActive())
            .set(MYENTITY.BRAND, myentity.getBrand())
            .where(MYENTITY.ID.eq(myentity.getId()))
            .execute();

    }
}
这是一个问题还是我遗漏了什么?

SPI Javadoc声明它拦截对类似的方法的调用


它无法截获任意更新调用,例如DSLContext.update,甚至DSLContext.executeUPDATE。。因为jOOQ无法确定数据库中的update语句将影响多少记录以及哪些记录。除此之外,在您的服务中,DSLContext.update语句的生命周期中不涉及实际的UpdateRecord,因此您希望对updateEnd进行哪种SPI调用?

您可以显示更新调用的代码吗?@LukasEder我添加了代码,如果您需要更多信息,可以询问是否完善,我是JOOQ的新手,正在开发一个现有的应用程序,当时我还不知道还有其他方法可以更新记录。现在我看得很清楚,谢谢你,卢卡斯
@Component
@Scope(value = "singleton")
public class CustomerService {

    @Autowired
    private MyentityRepository myentityRepository;


    public void editCustomerMyentity(CustomerMyentity customerMyentity){

        Myentity myentity = myentityRepository.findbyId(customerMyentity.getId());
        ...
        // Do treatments here : insert another record to trace the modification
        ...
        myentity.setName(customerMyentity.getName());
        myentity.setBrand(customerMyentity.getBrand());
        myentityRepository.update(myentity);

    }
}