Pergunta

O que é o caminho certo fazer validar um jpa consulta programaticamente. Hibernate valida todas as anotações com base consultas nomeadas em entidades. Mas como eu posso chamar esta rotina de validação em consultas jpa programaticamente edificaram, para verificar erros?

@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
}
Foi útil?

Solução

Não faça isso. teste de integração o inferno fora de seu código, usando um banco de dados real com o mesmo esquema que o seu ambiente de produção.

Pense nisso: se você criar uma consulta mal formado, isso é uma bug de programação . O que você vai fazer com a informação? Informar ao usuário que uma consulta JPA é mal formado? Tudo o que você pode realmente fazer é registrar o erro e dizer ao usuário "algo de ruim aconteceu". Você saberá que é uma consulta malformado quando você verificar os logs depois de qualquer maneira ...

Editar

Ele também pode valer a pena investigar a chamada createQuery(), alimentando-o Mau dados - o javadoc aqui sugere que ele pode jogar um HibernateException, e eu não tenho certeza o que poderia fazer com uma seqüência diferente de validá-lo ...

Outras dicas

Ou você pode usar createQuery, ou você precisa colocar o seu nome da classe ao escrever um JPQL.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top