1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Por que o meu Hibernate da erro neste SQL?

Boa tarde. Estou fazendo testes em meu sistema e me deparei com um erro um pouco estranho. Utilizando o Hibernate o sistema não consegue localizar um objeto através dos parâmetros passados, mas se o mesmo sql eu executar no banco de dados, ele puxa os dados.

Segue método da classe DAO

    public List<ProdutosFornecedor> findProdFornecByFornecAndCodProd(String codProd,
            Pessoa fornecedor, String un) {
        EntityManager em = getEntityManager();
        try {
            Query q = em.createQuery("select object(o) from "
                    + "ProdutosFornecedor as o "
                    + "join fetch o.unidade u "
                    + "WHERE o.codigoFornecedor like (:codProd) "
                    + "AND o.fornecedor = :fornec "
                    + "AND o.situacao = true "
                    + "AND lower(u.abreviatura) like (:un) ");
            q.setParameter("codProd", codProd);
            q.setParameter("fornec", fornecedor);
            q.setParameter("un", un.toLowerCase());
            return q.getResultList();
        } catch (Exception e) {
            System.out.println(e);
            return null;
        } finally {
            em.close();
        }
    }

Segue SQL direto no BD

select * from 
ProdutosFornecedor as o 
inner join unidade u on u.codigo_unidade = o.unidade
WHERE o.codigo_fornecedor like ('Bc1548/p18')
AND o.fornecedor = 2397 
AND o.situacao = true
and lower(u.abreviatura) like ('p18')

Nestes testes, identifiquei que os produtos cujo o código não possui a barra funcionam. Pode ser este o problema, como resolve-lo?

Obrigado

  • Já tentou remover o object(o) e deixar somente o? Qual a mensagem do erro?

    utluiz   03 de jan de 2014
  • Ai que ta rapaz, não da erro. Simplesmente não vem o registro. Se eu executar ele direto no BD funciona! Tentei deixar apenas o "o". Mas também não funcionou! Obrigado

    Gilvan André Gobbato   03 de jan de 2014
  • Mas entra na exceção?

    Caio Corrêa   03 de jan de 2014
  • Não! Vai direto para o finally!

    Gilvan André Gobbato   03 de jan de 2014
  • poste o erro que esta ocorrendo

    michelorth_92   03 de jan de 2014
Mostrar todos os 9 comentários>
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

4 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags java sql jsf ou faça a sua própria pergunta.