Мне не удается обработать исключения персистентности на стороне чтения.
Я внедряю CQRS с Lagom.Я занимаюсь событиями на JPA readside.У меня есть операция, которая не выполняется из-за нарушения ограничения уникального ключа.Я добавил для этого попытку catch, но она никогда не вызывается.
try {
entityManager.persist(entity);
} catch (RuntimeException re) {
log.error("Failed to persist entity with name: {}", entity.getName());
}
Я ожидаю увидеть журнал «Не удалось сохранить сущность с именем ...», когда происходит нарушение уникального ключа, новместо этого я вижу следующую ошибку:
2019-04-28 10:47:27,645 WARN org.hibernate.engine.jdbc.spi.SqlExceptionHelper - SQL Error: 0, SQLState: 23505
2019-04-28 10:47:27,645 ERROR org.hibernate.engine.jdbc.spi.SqlExceptionHelper - ERROR: duplicate key value violates unique constraint "entity_pkey"
Detail: Key (id)=(eac09c0e-5d4a-35cf-b956-2a7734cb40e5) already exists.
Location: File: nbtinsert.c, Routine: _bt_check_unique, Line: 434
Server SQLState: 23505
Что-то мне не хватает в обработке ошибок / исключений в процессоре Lagom CQRS ReadSide?
Я также добавил проверки, такие как:
final Entity persistedEntity = entityManager.find(Entity.class, entity.getId());
if(persistedEntity == null) {
entityManager.persist(entity);
} else {
log.info("Entity {} already exists", entity.getName());
}
Но это не работает.Я все еще получаю сообщение об ошибке уникального ключа из класса гибернации.