1

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

我按照这个线程的建议实现了一个用事务的开始和提交ServiceLayerDecorator来包装方法。invoke如果违反唯一性约束,提交操作将抛出一个RollbackException.

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

据我看SimpleRequestProcessor,验证与调用分开进行,似乎没有一种明显的方法可以invoke以这种方式传播失败。

4

1 回答 1

0

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

于 2013-01-09T11:04:49.070 回答