即使您在保留用户对象之前检查代码中的条件,也始终有机会在您检查的时间和保留新用户之间有人创建重复的登录ID。
但是,如果您进行显式检查,则在UI中显示适当的错误消息会更加容易。如果您在表上有多个约束,则捕获ConstraintViolationException不会使您轻松确定违反了哪个约束。
所以我会两者都做。假设您要从Seam的EntityHome扩展:
- 在persist()方法中,运行查询以确保loginid是唯一的。如果不是,则向相应的控件添加错误消息,然后返回null。
- 包装对super.persist()的调用并捕获ConstraintViolationException,显示通用的重复错误消息
编辑
正如Shervin提到的那样,创建一个JSF验证器是一个好主意(取代上面的#1),但是您仍然应该期待最差的情况并捕获ConstraintViolationException。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)