Frage

Was ist der richtige Weg, um eine JPA-Abfrage programmatisch validiere. Hibernate validiert alle Annotation basierend benannte Abfragen für Entitäten. Aber wie kann ich diese Validierungsroutine rufen programmatisch builded JPA-Abfragen, auf Fehler zu überprüfen?

@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
}
War es hilfreich?

Lösung

Nicht. Integration testet die Hölle aus Ihrem Code, eine echte Datenbank mit dem gleichen Schema wie die Produktionsumgebung verwendet wird.

Denken Sie daran: wenn Sie eine fehlerhafte Abfrage erstellen, das ist ein Programmfehler . Was werden Sie mit den Informationen zu tun? Sagen Sie den Benutzer, der eine JPA-Abfrage fehlerhaft ist? Alles, was Sie realistischerweise tun können, ist das Fehlerprotokoll und den Benutzer „etwas Schlimmes passiert ist“ sagen. Sie wissen, es ist eine fehlerhafte Abfrage, wenn Sie die Protokolle versuchen Sie es später sowieso ...

Bearbeiten

Es könnte sich auch lohnen, die createQuery() Aufruf Untersuchung durch schlechte Daten füttern - die javadoc

Andere Tipps

Sie können entweder Create verwenden, oder Sie benötigen, um Ihre Klassennamen zu setzen, während ein JPQL zu schreiben.

scroll top