Поиск репозитория в Hibernate EventListener вызывает переполнение стека - PullRequest
0 голосов
/ 06 мая 2019

У меня есть пользовательский слушатель событий Hibernate. Если сущность загрязнена, код пытается найти старые записи аудита для этой сущности. Проблема в том, что это вызывает ошибку переполнения стека.

Это мой слушатель:

@Component
public class MyCustomEventListener implements FlushEntityEventListener {

    @Autowired
    private AuditService service;

    @Override
    public void onFlushEntity(FlushEntityEvent event) throws HibernateException {

        final Object entity = event.getEntity();

        boolean isDirty = isDirty(event);

        if (isDirty) {
            service.auditEntity(entity);
        }
        ...
    }
    ...
}

И мой сервис:

@Service
public class AuditServiceImpl implements AuditService
    public void auditEntity(BaseEntity entity) {    
        try {
            String tableName = getTableName(entity);
            Optional<AuditRecord> result = auditRepository.findFirstByTableNameAndRecordIdOrderByIdDesc(tableName, entity.getId());
            ...
        }
        ...
    }
}

Во время вызова искателя хранилища он каким-то образом снова запускает eventListener.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...