Domanda

Qual è il modo giusto per convalidare una query jpa a livello di codice. Hibernate convalida tutte le query denominate basate su annotazioni su entità. Ma come posso chiamare questa routine di validazione su query jpa costruite a livello di codice, per verificare la presenza di errori?

@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
}
È stato utile?

Soluzione

Non farlo. L'integrazione mette alla prova il tuo codice, usando un vero database con lo stesso schema del tuo ambiente di produzione.

Pensaci: se crei una query non valida, si tratta di un bug di programmazione . Che cosa hai intenzione di fare con le informazioni? Dire all'utente che una query JPA non è valida? Tutto ciò che puoi realisticamente fare è registrare l'errore e dire all'utente "è successo qualcosa di brutto". Saprai che è una query non valida quando controlli comunque i log in seguito ...

Modifica

Potrebbe anche valere la pena indagare sulla chiamata createQuery () fornendo dati errati: javadoc qui suggerisce che può lanciare un HibernateException , e non sono sicuro cosa potrebbe fare con una stringa diversa dalla convalida ...

Altri suggerimenti

O puoi usare createQuery o devi inserire il nome della tua classe mentre scrivi un JPQL.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top