2014-09-01 56 views
2

我使用JAX-RS更新实体,并且我有一个ValidationException映射器来处理验证错误。RollbackException隐藏ValidationException

在我的JAX-RS方法中,我将实体的更新委托给一个EJB方法,该方法使用内部EntityManager#merge进行工作。

一切工作正常,但是当我有一个验证约束错误,而不是有一个ValidationException,然后由我的JAX-RS包装器处理,而是有一个RollbackException封装我的ValidationException。因此我的异常封装不会被调用。

我想到了几种方法来解决这个问题:

  • 验证我的JAX-RS方法实体打电话给我的EJB
  • 刷新在EJB方法我的实体管理器,然后赶上回滚在JAX前-RS方法,“解包”验证异常并抛出它。

我要找来处理这种问题的最好办法。你会怎么做?

感谢,

F.D

回答

1

如果您想使用的映射方式和所有的改变都通过JAX-RS制成,我可能会使用JAX-RS Bean验证的支持。您甚至可以禁用基于JPA生命周期的验证(使用'validation-mode'NONE)。

最后,它会涉及到您的应用程序的结构和您的偏好是什么。