2010-03-04 4 views
1

Quelle est la meilleure façon d'exprimer la contrainte de portée dans JPA? Je voudrais dire quelque chose comme "cette colonne ne peut prendre que des valeurs entre 1..5".Contraintes expresses non triviales dans JPA

Probablement, je pourrais utiliser @PrePersist et @PreUpdate pour cela.

Y a-t-il un meilleur moyen?

Répondre

3

La validation Bean (JSR 303) est une norme , Hibernate Validator est juste une mise en œuvre (RI plus précisément) si cela ne vous attachez pas vraiment avec Hibernate. Et bien que Bean Validation 1.0 fasse partie de Java EE 6, il peut être utilisé "en dehors" d'un conteneur Java EE 6. Il permet de faire des choses comme ceci:

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; 

     ... 
} 

Le post récent Bean Validation with JPA 1.0 blog montre comment utiliser cette API avec JPA 1.0 avec un écouteur d'entité (effectuant une validation sur @PrePersist et @PreUpdate).

1

JSR 303 est implémenté par Hibernate Validator qui peut être utilisé à cette fin. Je dirais que cela dépend de votre infrastructure web (si vous construisez une application web) à quel point cela peut être utilisé pour effectuer la validation côté client, cependant. Nous essayons actuellement d'intégrer cela avec une application GWT.

Google et SO trouver une autre implémentation que je ne connaissais pas jusqu'à présent: agimatec-validation.

+0

Je voudrais mieux utiliser quelque chose qui n'est pas lié à Hibernate ... – pajton

+0

Hm, c'est peut-être une solution. Je cherchais plutôt une sorte de truc, un moyen rapide. En outre, je parle de la contrainte de niveau DB, pas de la validation du client. – pajton

Questions connexes