Выразите нетривиальные ограничения в JPA - PullRequest
1 голос
/ 04 марта 2010

Каков наилучший способ выражения ограничения диапазона в JPA?Я хотел бы выразить что-то вроде «этот столбец может принимать значения только между 1..5».

Возможно, я мог бы использовать для этого @PrePersist и @PreUpdate.

Есть ли лучший способ?

Ответы [ 2 ]

3 голосов
/ 05 марта 2010

Проверка 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 с JPA 1.0 показывает, как использовать этот API с JPA 1.0 с прослушивателем сущностей (проверка на @PrePersist и @PreUpdate).

1 голос
/ 04 марта 2010

Существует JSR 303, который реализован Hibernate Validator , который можно использовать для этой цели. Я бы сказал, что от вашей веб-инфраструктуры (если вы создаете веб-приложение) зависит, насколько хорошо это можно использовать для выполнения проверки на стороне клиента. В настоящее время мы пытаемся интегрировать это с приложением GWT.

Google и SO придумали еще одну реализацию, которую я до сих пор не знал: agimatec-validation .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...