2012-06-25 1 views
0

J'ai une table qui contient le stock. C'est la base de données existante et le stock est conservé dans des colonnes. La base de données a une contrainte sur les colonnes indiquant qu'elles ne peuvent pas être des valeurs négatives. Mais je reçois seulement la violation de contrainte après que la transaction soit commise.Comment valider des valeurs négatives avec des annotations d'hibernation?

15:21:31,154 WARN JDBCExceptionReporter:77 - SQL Error: 2290, SQLState: 23000 
15:21:31,154 ERROR JDBCExceptionReporter:78 - ORA-02290: check constraint (ERPDSS13.STKMAST_CON_QTY13) violated 
ORA-06512: at "ERPDSS13.INLTRAN_UPD_STKMAST", line 25 
ORA-04088: error during execution of trigger 'ERPDSS13.INLTRAN_UPD_STKMAST' 

Y at-il un moyen avec des annotations, vous pouvez spécifier qu'une colonne ne peut pas être négative. Voici la cartographie des colonnes?

@Column(name = "STKSOHQTY01", precision = 12) 
public BigDecimal getStksohqty01() { 
    return this.stksohqty01; 
} 
+0

Quelle est la version de mise en veille prolongée? – Perception

+0

3.5.4-Final Chan

Répondre

2
@Check(constraints = "STKSOHQTY01 >= 0") 
public class Coupon implements Serializable { 

} 

Il devrait fonctionner

+0

Où l'exception sera-t-elle levée? – Chan

0

Essayez avec @Check

@Check(constraints = "STKSOHQTY01t >= 0") 

public class YourEntity implements Serializable {...} 
0

de la version 3.5 Hibernate supporte le standard bean validation (JSR303). Vous pouvez et devez les utiliser pour valider vos entités comme l'API est rapide, bien intégré, et plus important encore, normalisé:

@Min(value = 0) 
@Column(name = "STKSOHQTY01", precision = 12) 
public BigDecimal getStksohqty01() { 
    return this.stksohqty01; 
} 
Questions connexes