Pregunta

¿Cuál es la forma correcta de validar una consulta jpa mediante programación? Hibernate valida todas las consultas con nombre basadas en anotaciones en las entidades. Pero, ¿cómo puedo llamar a esta rutina de validación en consultas jpa integradas mediante programación para verificar si hay errores?

@Entity
public class Foo {
@Id
public int id;

public String name;

}
main(...) {
    Query q = getEntityManager().createQuery("select e from " + Foo.class.getName() + " e where e.name = 'x' ");
    // validate q here
}
¿Fue útil?

Solución

No lo hagas. Prueba de integración con tu código, utilizando una base de datos real con el mismo esquema que tu entorno de producción.

Piénselo: si crea una consulta con formato incorrecto, es un error de programación . ¿Qué vas a hacer con la información? ¿Decirle al usuario que una consulta JPA está mal formada? Todo lo que puede hacer de forma realista es registrar el error y decirle al usuario "algo malo sucedió". Sabrás que es una consulta mal formada cuando revises los registros más tarde de todos modos ...

Editar

También podría valer la pena investigar la llamada createQuery () alimentándola con datos incorrectos: el javadoc aquí sugiere que puede lanzar una HibernateException , y no estoy seguro qué podría hacer con una cadena que no sea validarla ...

Otros consejos

O puede usar createQuery, o necesita poner el nombre de su clase mientras escribe un JPQL.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top