如何使用RequestFactory处理由ConstraintViolationException引起的RollbackException

时间:2013-01-08 18:27:05

标签: hibernate gwt jpa bean-validation requestfactory

我正在尝试使用带有RequestFactory(GWT 2.5)的JPA和Hibernate在字段上实现唯一值约束。我的其他约束是使用JSR303实现的,我想以相同的方式向客户端报告违规行为(在onConstraintViolation中调用Receiver)。据我了解,实现此类约束的最佳选择是在使用unique = true属性时设置@Column。然后,在提交事务时由数据库强制执行此操作,并避免与通过查询声明唯一性相关的任何竞争条件。

我遵循了this thread's关于实现ServiceLayerDecorator的建议,以便使用事务的开始和提交来包装invoke方法。如果违反了唯一性约束,则提交操作将抛出RollbackException

如何处理此异常,以便将其作为约束违规而不是通用故障传播到客户端?

据我所知,SimpleRequestProcessor,验证与调用分开进行,似乎没有一种明显的方式以这种方式从invoke传播失败。< / p>

1 个答案:

答案 0 :(得分:0)

您可以尝试实现自定义约束以检查唯一性。另请参阅https://community.jboss.org/wiki/AccessingTheHibernateSessionWithinAConstraintValidator