0

一遍又一遍地问/提到这个问题,但我找不到我做错了什么或者问题是“真实的”:我有一个用于简单 Oracle 表的实体类,其中有一个字段应该是唯一的. 它在数据库中有一个独特的约束。在实体定义中,我添加了 JPA 注释 -

@Entity
@Table(name = "tbl", uniqueConstraints = @UniqueConstraint(columnNames = "uni_field"))
public class MyTable implements Serializable {
...
@Column(name = "uni_field", unique = true)
@NotNull(message = "Field is required.")
    private String field;
...

我正在使用 JBoss 问题是我总是以休眠异常结束,如果我想知道约束违规,这会将我与 JPA 实现联系起来。有没有办法在这种情况下捕捉持久性异常并提供用户友好的消息?如果不是,那么@Column(name = "uni_field", unique = true)or有什么用uniqueConstraints = @UniqueConstraint(columnNames = "uni_field")

4

1 回答 1

0

如果您想显示注释中定义的“需要字段”消息,您可以像这样捕获您的异常:

catch(javax.validation.ConstraintViolationException cve){
  Set<ConstraintViolation<?>> cvs = cve.getConstraintViolations();
  String errMsg = "";
  for (ConstraintViolation<?> cv : cvs) {    
    errMsg = cv.getMessage();
  }
}

作为参考,请查看OpenJPA Bean Validation Primer

于 2013-05-26T07:15:00.850 回答