2010-03-31 17 views
5

Sto utilizzando JBoss 6 con Seam e ho un'entità che sto cercando di mantenere, User. Ho esteso lo org.jboss.seam.framework.EntityHome per fornire una classe e ho sostituito il metodo persist(). Ho annotato a fondo la mia classe di entità con annotazioni javax.validation. Quando fornisco valori validi per tutti i campi della mia classe di entità, l'oggetto è persistente senza problemi. Quando si viola uno dei vincoli di convalida, la persistenza non riesce come previsto.Entity valid listener listener

Il problema che sto riscontrando riguarda le violazioni dei vincoli durante la persistenza asincrona: l'ibernazione non mi dice quale vincolo è stato violato!

javax.validation.ConstraintViolationException: validation failed for classes [com.example.model.User] duringpersist time for groups [javax.validation.groups.Default, ] 
at org.hibernate.cfg.beanvalidation.BeanValidationEventListener.validate(BeanValidationEventListener.java:132) 
at org.hibernate.cfg.beanvalidation.BeanValidationEventListener.onPreInsert(BeanValidationEventListener.java:71) 

Se forzo persistenza sincrono con l'aggiunta di EntityManager.flush()-UserHome.persist(), quindi posso prendere le ConstraintViolationException e di registro di uscita dichiarazioni contenenti i vincoli violati.

La mia domanda: è possibile registrare un listener con hibernate/jboss per le violazioni dei vincoli? Penso che sia un po 'zoppo che l'ibernazione non stampa le violazioni, ma spero di poter inserire del codice che possa catturarle e registrarle per maggiori informazioni. Altrimenti non ho idea di quale vincolo sia stato violato.

Grazie!

+0

esprimete la vostra risposta al di sotto risposta – developer

risposta

0

Si prega di verificare questi collegamenti, si otterrà una buona informazione:

validator-checkconstraints

additionalmodules

+0

Grazie per il link, ma questo non risolve la mia domanda. – purecharger

+0

Penso che leggendo il primo collegamento di Damodar trovi quello che ti serve nell'esempio 6.1. Prova ad estendere javax.validation.groups.Default e inserisci la tua classe in xml. Ho avuto un problema simile e ho rimosso le annotazioni di convalida e ha funzionato come necessario. –