Как обрабатывать исключения в процессорах Readside Lagom CQRS - PullRequest
0 голосов
/ 28 апреля 2019

Мне не удается обработать исключения персистентности на стороне чтения.

Я внедряю 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());
   }

Но это не работает.Я все еще получаю сообщение об ошибке уникального ключа из класса гибернации.

...