如何处理Lagom CQRS Readside处理器中的异常

时间:2019-04-28 08:51:45

标签: java cqrs lagom

我无法在读取端处理持久性异常。

我正在与Lagom一起实施CQRS。我正在处理JPA readside上的事件。由于唯一键约束冲突,我的操作失败。我添加了一个try 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());
   }

但是它不起作用。我仍然从休眠类中收到唯一键冲突错误。

0 个答案:

没有答案