【发布时间】:2010-03-04 15:35:17
【问题描述】:
在 JPA 中表达范围约束的最佳方式是什么?我想表达类似“此列只能取 1..5 之间的值”之类的内容。
也许我可以为此使用@PrePersist 和@PreUpdate。
有没有更好的办法?
【问题讨论】:
标签: java jpa constraints
在 JPA 中表达范围约束的最佳方式是什么?我想表达类似“此列只能取 1..5 之间的值”之类的内容。
也许我可以为此使用@PrePersist 和@PreUpdate。
有没有更好的办法?
【问题讨论】:
标签: java jpa constraints
Bean 验证 (JSR 303) 是一个标准,Hibernate Validator 只是一个实现(更准确地说是 RI),所以这并不能真正将您与 Hibernate 联系起来。尽管 Bean Validation 1.0 是 Java EE 6 的一部分,但它可以在 Java EE 6 容器“外部”使用。它允许做这样的事情:
public class Address {
@NotNull private String line1;
private String line2;
private String zip;
private String state;
@Length(max = 20)
@NotNull
private String country;
@Range(min = -2, max = 50, message = "Floor out of range")
public int floor;
...
}
最近的 Bean Validation with JPA 1.0 博客文章展示了如何将此 API 与 JPA 1.0 与实体侦听器一起使用(对 @PrePersist 和 @PreUpdate 执行验证)。
【讨论】:
Hibernate Validator 实现的 JSR 303 可用于此目的。不过,我想说这取决于您的 Web 框架(如果您正在构建一个 Web 应用程序),它可以用于执行客户端验证的效果如何。我们目前正在尝试将其与 GWT 应用程序集成。
Google 和 SO 提出了另一个我目前不知道的实现:agimatec-validation。
【讨论】: