Função do postgres no JPA

Java

11/08/2014

Pessoal, boa noite.

Gostaria de saber se existe alguma forma de usar uma função do banco de dados no JPA(no meu caso uso postgreSQL), a função do banco é de autenticar o usuário, onde ela retorna um valor booleano, porém quando eu vou usar no JPA utilizando o createNativeQuery(), só retorna o valor false, alguém conhece alguma outra solução.

Desde já agradeço pela colaboração.
Att.
Luis Camilo

Luis Camilo

Curtidas 0

Respostas

Ronaldo Lanhellas

Ronaldo Lanhellas

11/08/2014

Poste o trecho do seu código que você está utilizando para tentar chamar a função.
GOSTEI 0
Luis Camilo

Luis Camilo

11/08/2014

Bom dia.
Segue abaixo o código:

private Boolean solicitaFuncaoAutenticar(String usuario, String senha) {

		EntityManagerFactory emf = Persistence.createEntityManagerFactory("controleFinanceiro");
		EntityManager em = emf.createEntityManager();
		Query query = em.createNativeQuery("SELECT controle.function_login_usuario(?,?) ");
		query.setParameter(1, usuario);
		query.setParameter(2, senha);
		System.out.println(query.getSingleResult());
		return (Boolean) query.getSingleResult();
	}


O código real é semelhante a esse, a função do banco de dados está correta, pois usei o padrão JDBC e funcionou normalmente, só que nesse caso a função só está retornando falso.
Desde já agradeço pela atenção.
Att.
GOSTEI 0
Ronaldo Lanhellas

Ronaldo Lanhellas

11/08/2014

BOm, vamos tentar por namedQuery (acho mais organizado) .

1 - Primeiro crie sua namedQuery :

@NamedQueries({
    @NamedQuery(name = "ControleFinanceiro.funcaoLoginUsuario", query = "SELECT controle.function_login_usuario(:usuario,:senha)")
})


2 - Agora vamos usá-la:

private Boolean solicitaFuncaoAutenticar(String usuario, String senha) {
 
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("controleFinanceiro");
        EntityManager em = emf.createEntityManager();
        Query query = em.createNamedQuery("ControleFinanceiro.funcaoLoginUsuario");
        query.setParameter(":usuario", usuario);
        query.setParameter(":senha", senha);
        System.out.println(query.getSingleResult());
        return (Boolean) query.getSingleResult();
    }
GOSTEI 0
Luis Camilo

Luis Camilo

11/08/2014

Está bem vou tentar e já te falo... Obrigado pela sugestão
GOSTEI 0
Ronaldo Lanhellas

Ronaldo Lanhellas

11/08/2014

Está bem vou tentar e já te falo... Obrigado pela sugestão


Ok, aguarde seu feedback
GOSTEI 0
POSTAR