Errors in named queries! [RESOLVIDO]

Boa tarde! Estou com um novo problema:

Caused by: org.hibernate.HibernateException: Errors in named queries: Categoria.getDescricao
        at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:365)
        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1300)
        at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:915)
        at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:730)
        ... 81 more
ADM5603:Event listener error [javax.persistence.PersistenceException: org.hibernate.HibernateException: Errors in named queries: Categoria.getDescricao]
ADM1075:Error on listening event:[javax.persistence.PersistenceException: org.hibernate.HibernateException: Errors in named queries: Categoria.getDescricao]

esse erro é causado por essa parte do código:

@NamedQueries({
    @NamedQuery(name = "Categoria.getDescricao", query = "SELECT c FROM categ c WHERE c.descricao like :descricao")
})

Obs: a query não influencia no erro, mesmo q seja uma consulta simples também da erro.

 return (List<CategoriaDeFuncionalidade>) this.em.createNamedQuery("Categoria.getDescricao")
                    .setParameter("descricao",desc+"%")
                    .getResultList();

Se alguém poder me ajudar a desvendar esse misterio… vou ficar muito agradecido.

ja tentou so com

 @NamedQuery(name = "Categoria.getDescricao", query = "SELECT c FROM categ c WHERE c.descricao like :descricao")  

ja tentei sim…
acredito que o problema possa ser algo com configuração ou com as libs, pq tenho outro projeto que funciona tudo normal.

obrigado… ^^ …

se eu uso o código:

return (List<CategoriaDeFuncionalidade>) this.em.createQuery("SELECT c FROM categ c WHERE c.descricao like :descricao")  //createNamedQuery("Categoria.getDescricao")
                    .setParameter("descricao",desc+"%")
                    .getResultList();

funciona… mas queria utilizar “NamedQueries”.
Alguem pode me dar uma solução??

[quote=Gu1lherme]se eu uso o código:

return (List<CategoriaDeFuncionalidade>) this.em.createQuery("SELECT c FROM categ c WHERE c.descricao like :descricao")  //createNamedQuery("Categoria.getDescricao")
                    .setParameter("descricao",desc+"%")
                    .getResultList();

funciona… mas queria utilizar “NamedQueries”.
Alguem pode me dar uma solução??[/quote]

Sei la, chute total, mas mudando o nome da query, pra Categoria.busca, o erro persiste?

rs… essa d chute total é boa…
ja tentei mudar mas n mudou nada, continuou com o erro… mas valeu pelo palpite…

Pensei que fosse algo relacionado a ter um atributo descrição e com o nome da query com o mesmo nome de um get daria problema.
Estranho mesmo, tente trocar os jars do Hibernate para ver se resolve. Eu atualmente uso NamedQueries sem problema…

@Entity
@NamedQueries({
	@NamedQuery(name=&quot;searchNextRace&quot;,
				query=&quot;select c from Corrida c where c.dataCorrida &gt; current_date() order by c.dataCorrida asc&quot;)	
})

Uso estas classes:

import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;

ja estou utilizando essas classes no projeto, mas o engraçado é que os jars e as consultas estao similares a outro projeto aqui que ja finalizei com sucesso, e n sei porque nesse ta dando esse erro. vou tentar outros jars pq acredito q o problema seja com jars ou com configuração.
Valeu pela ajuda, se tiver mais alguma ideia, sera bem vinda…

Erro:

Caused by: javax.persistence.PersistenceException: org.hibernate.HibernateException: Errors in named queries: CategoriaDeFuncionalidade.getDescricoes
        at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:737)
        at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:127)
        at com.sun.enterprise.server.PersistenceUnitLoaderImpl.load(PersistenceUnitLoaderImpl.java:149)
        at com.sun.enterprise.server.PersistenceUnitLoaderImpl.load(PersistenceUnitLoaderImpl.java:84)
        at com.sun.enterprise.web.WebModuleListene
r.loadPersistenceUnits(WebModuleListener.java:190)
        ... 77 more
Caused by: org.hibernate.HibernateException: Errors in named queries: CategoriaDeFuncionalidade.getDescricoes
        at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:365)
        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1300)
        at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:915)
        at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:730)
        ... 81 more
ADM5603:Event listener error [javax.persistence.PersistenceException: org.hibernate.HibernateException: Errors in named queries: CategoriaDeFuncionalidade.getDescricoes]
ADM1075:Error on listening event:[javax.persistence.PersistenceException: org.hibernate.HibernateException: Errors in named queries: CategoriaDeFuncionalidade.getDescricoes]

esse erro não acontece se eu faço referencia a uma tabela de outro projeto (primeira query), mas quando faço referencia a tabela categoria não funciona.

@Entity
@Table(name = "categoria")
@NamedQueries({
    @NamedQuery(name="Funcionario.getTodos",
                query="SELECT o FROM Funcionario o")   FUNCIONA
    //@NamedQuery(name = "Categoria.getDescricao", query = "SELECT c FROM categoria c WHERE c.descricao =:descricao")       NÃO FUNCIONA
    //@NamedQuery(name = "Categoria.getDescricao", query = "SELECT c FROM Categoria c WHERE c.descricao like :descricao")      NÃO FUNCIONA
    //@NamedQuery(name = "Categoria.getTodos", query = "SELECT o FROM categoria o ORDER BY o.descricao")       NÃO FUNCIONA
})

Obs: a tabela “categoria” é criada e até consigo inserir mas qualquer tipo de consulta por NamedQuery acusa esse erro.

Oi Guilherme, passa então como está essa classe e os XML’s de mapeamento

estou usando jpa e unidade de persitência:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
  <persistence-unit name="NovoPatrimonioPU" transaction-type="JTA">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <jta-data-source>jdbc/sample</jta-data-source>
    <class>novopatrimonio.seguranca.entidades.CategoriaDeFuncionalidade</class>
    <class>novopatrimonio.seguranca.entidades.Acesso</class>
    <class>novopatrimonio.seguranca.entidades.Mensagem</class>
    <class>novopatrimonio.seguranca.entidades.Parametrizacao</class>
    <class>novopatrimonio.seguranca.entidades.PerfilDeAcesso</class>
    <class>novopatrimonio.seguranca.entidades.PermissaoDeAcesso</class>
    <class>novopatrimonio.seguranca.entidades.Recurso</class>
    <class>novopatrimonio.seguranca.entidades.RegistroLog</class>
    <class>novopatrimonio.seguranca.entidades.Usuario</class>
    <class>novopatrimonio.geral.entidades.Municipio</class>
    <exclude-unlisted-classes>true</exclude-unlisted-classes>
    <properties>
      <property name="hibernate.hbm2ddl.auto" value="update"/>
      <property name="transaction.factory_class" value="org.hibernate.transaction.JTATransactionFactory"/>
      <property name="jta.UserTransaction" value="javax.transaction.UserTransaction"/>
      <property name="transaction.manager_lookup_class" value="org.hibernate.transaction.JOTMTransactionManagerLookup"/>
      <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
    </properties>
  </persistence-unit>
</persistence>

por favor, da uma olhada ai porque já estou pirando com esse problema…

Valeu pela ajuda…

package novopatrimonio.seguranca.entidades;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;


@Entity
@Table(name = "categoria")
@NamedQueries({
    //@NamedQuery(name="Funcionario.getTodos",
    //            query="SELECT o FROM Funcionario o"),
    //@NamedQuery(name = "Categoria.getDescricao", query = "SELECT c FROM categ c WHERE c.descricao =:descricao")
    @NamedQuery(name = "Categoria.getDescricao",
                query = "SELECT o FROM Categoria o")
    //@NamedQuery(name = "Categoria.getTodos", query = "SELECT o FROM categ o ORDER BY o.descricao")
})
public class CategoriaDeFuncionalidade implements java.io.Serializable
{

    private static final long serialVersionUID = 1L;
    
    @Id
    @GeneratedValue(strategy = GenerationType.TABLE)
    private Long id;

    @Column(name = "descricao")
    private String descricao;

    public Long getId()
    {
        return id;
    }

    public void setId(Long id)
    {
        this.id = id;
    }

    public String getDescricao()
    {
        return this.descricao;
    }

    public void setDescricao(String descricao)
    {
        this.descricao = descricao;
    }
}

Na sua named query, vc não deveria estar fazendo a consulta contra CategoriaDeFuncionalidade, em vez de categoria, visto que esse somente é o nome da tabela na base?

Bingo!!!
Finalmente deu certo… Meu erro é justamente o que você falou, mas fiquei confuso do porque não posso fazer referência ao nome da tabela.

Muito obrigado pela ajuda…

Blz! As vezes pequenos detalhes nos causam grandes problemas. :slight_smile:

Coloque [RESOLVIDO] no título do tópico pra identificar resolução!

já coloquei o RESOLVIDO… ^^ …
mas vc poderia me explicar pq n posso fazer referencia ao nome da tabela?
Vlw…

Acho q pra vc rodar o SQL propriamente dito, vc deve usar @NamedNativeQuery
Tenta e ve se funciona contra as tabelas.

Ok, vou dar uma estudada nesse assunto. Vlw…

AMEM!!!
Tava com o mesmo erro!!