我正在尝试使用 JPA 和 Hibernate with RequestFactory (GWT 2.5) 在字段上实现唯一值约束。我的其他约束是使用 JSR303 实现的,我想以相同的方式向客户端报告违规行为(onConstraintViolation
在 中调用Receiver
)。据我了解,实现此类约束的最佳选择是unique = true
在使用@Column
属性时进行设置。然后在提交事务时由数据库强制执行此操作,并避免与通过查询断言唯一性相关的任何竞争条件。
我按照这个线程的建议实现了一个用事务的开始和提交ServiceLayerDecorator
来包装方法。invoke
如果违反唯一性约束,提交操作将抛出一个RollbackException
.
如何处理此异常,以便将其作为约束违规而不是一般故障传播到客户端?
据我看SimpleRequestProcessor
,验证与调用分开进行,似乎没有一种明显的方法可以invoke
以这种方式传播失败。