Question

Quelle est la bonne façon de valider une requête jpa par programme. Hibernate valide toutes les requêtes nommées basées sur des annotations sur des entités. Mais comment puis-je appeler cette routine de validation sur les requêtes jpa générées par programme pour vérifier les erreurs?

@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
}
Était-ce utile?

La solution

Ne pas. L'intégration teste votre code avec une vraie base de données avec le même schéma que votre environnement de production.

Pensez-y: si vous créez une requête mal formée, il s'agit d'un bogue de programmation . Qu'allez-vous faire avec l'information? Indiquer à l'utilisateur qu'une requête JPA est mal formée? Tout ce que vous pouvez faire de manière réaliste est de consigner l'erreur et de dire à l'utilisateur "que quelque chose de mauvais est arrivé". Vous saurez que c'est une requête mal formée quand vous vérifierez les journaux plus tard, de toute façon ...

Modifier

Cela pourrait également valoir la peine d’enquêter sur l’appel createQuery () en lui fournissant des données incorrectes - le javadoc here suggère qu'il peut générer une HibernateException , et je ne suis pas sûr ce qu’il pourrait faire avec une chaîne autre que la valider ...

Autres conseils

Vous pouvez utiliser createQuery ou vous devez indiquer le nom de votre classe lorsque vous écrivez un fichier JPQL.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top