2009-08-07 13 views
6

Estoy escribiendo una aplicación de Spring, y parece que cuando me encuentro con errores en la base de datos, a veces se lanza ConstraintViolationException de Hibernate y en ocasiones se arroja el DataIntegrityViolationException de Spring. ¿Hay alguna razón por la que uno pueda ser arrojado y no el otro? ¿Significan cosas diferentes?ConstraintViolationException VS DataIntegrityViolationException

Respuesta

4

Si ejecuta las llamadas de Hibernate a través de la HibernateTemplate, a continuación, la primavera se traducirá cualquier excepción de Hibernate (por ejemplo ConstraintViolationException) en la jerarquía de excepciones primavera (por ejemplo DataIntegrityViolationException). Si no usa HibernateTemplate, se realizarán las excepciones de Hibernate nativas. Ambos son RuntimeExceptions, por lo que no es necesario el manejo de excepciones explícito, por lo que no siempre es obvio cuál vas a ver.

+0

No estoy usando 'HibernateTemplate', pero recibo la excepción de Spring's wrapper solo cuando se infringe la clave primaria. Otras violaciones de clave únicas resultan en la excepción de Hibernate. El código es idéntico: solo importa el tipo de clave que se viola. –

+0

¿Está utilizando la anotación @Repository en su DAO? – cyotee

Cuestiones relacionadas