Erro hql simples

12 respostas
F
at java.lang.Thread.run(Thread.java:595)
2006-07-28 10:20:42,156 ERROR [localhost].[/IBICT2].[jsp]  -> Servlet.service() for servlet jsp threw exception
org.hibernate.QueryException: could not resolve property: evpNome of: hibernate.TbEveParceiros [select c.evpNome from hibernate.TbEveParceiros as c ]
	at org.hibernate.persister.entity.AbstractPropertyMapping.throwPropertyException(AbstractPropertyMapping.java:43)
	at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:37)

o select é muito simples… mas nao sei o que ta errado
select c.evpNome from TbEveParceiros as c

12 Respostas

bland

Santiago,

Verifiquei na sua query que você está chamando a sua tabela pelo schema hibernate.

select c.evpNome from hibernate.TbEveParceiros as c

Então se você quer que ela funcione corretamente, experimente remover o hibernate de sua query. Estou deduzindo que não é necessário colocar o schema, estou supondo que esse “hibernate” na sua query não seja necessário. Qualquer coisa, posta a dúvida aqui.

Abraço.

F

cara… comecei com isso agora e ja arrependi… deixa eu te mandar o metodo e o mapeamento e vc ve se me da uma forcinha… valeu mesmo.

public List getParceiros() {

		Session sessao = HibernateUtility.getSession();
		Transaction tx = sessao.beginTransaction();
		Query select = sessao.createQuery("select c.evpId from TbEveParceiros as c ");
		List objetos = select.list();
		System.out.println(objetos);
		tx.commit();
		sessao.close();
		return objetos;
	}
<hibernate-mapping package="hibernate">
    <class name="TbEveParceiros" table="TB_EVE_PARCEIROS">
        <composite-id name="id" class="TbEveParceirosId">
            <key-property name="eveId" type="long">
                <column name="EVE_ID" precision="10" scale="0" />
            </key-property>
            <key-property name="evpId" type="long">
                <column name="EVP_ID" precision="10" scale="0" />
            </key-property>
            <key-property name="evpNome" type="string">
                <column name="EVP_NOME" length="100" />
            </key-property>

o eclipse gerou o mapeamento sozinho… ai que nao entendi mesmo. brigadao.

S

Olá,

O nome do atributo que vc mapeiou na classe é esse mesmo: evpNome?
Esse não é nome da coluna da tabela do BD, não?
Talvez seja isso.

F

esqueci de dizer… nao sei tirar o hibernate da query…
ate uma semana atraz eu usava o netbeans e uma ferramenta nbxdoclet que eu gerava o mapeamento por comentarios e tinha um esqueminha de gerar as querys. a empresa obrigou a usar o eclipse pq o cliente exigiu… ai a casa caiu…haha

F

SISI… o mapeamento ta ai em cima… o nome é esse mesmo

bland

Santiago,

Pelo que eu percebi você está tentando criar uma query utilizando objetos, é isso?
Dessa maneira não funciona não. Tente, ao invés de colocar “objetos” na query, tente fazê-la na mão.
Para que funcione com objetos você teria de utilizar o CreateCriteria.
Pesquise sobre CreateCriteria e se possuir dúvidas, posta aqui.

Abraço.

F

cara… pra mim nao faz diferenca se vai buscar por objetos ou nao desde que me retorne os dados que estao no banco. to fazendo isso pra prencher um combo box… vc tem um exemplo simples ai de qualquer uma das duas formas. ai quebro a cabeca aqui… valeu a forca

F

fiz assim…

Session sessao = HibernateUtility.getSession();
Transaction tx = sessao.beginTransaction();
List objetos =sessao.createCriteria(TbEveParceiros.class).list();
System.out.println(objetos);
tx.commit();
sessao.close();
return objetos;

deu o erro…

Tamanho da lista = 15344
2006-07-28 11:00:40,500 ERROR [localhost].[/IBICT2].[jsp]  -> Servlet.service() for servlet jsp threw exception
java.lang.ClassCastException: hibernate.TbEveParceiros
	at org.apache.jsp.buscaEventos_jsp._jspService(buscaEventos_jsp.java:138)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)

o que eu fico puto é que o tamanho da lista ele imprime no jsp…

TbEveParceirosFacade tb = new TbEveParceirosFacade();

list =  tb.getParceiros();

Iterator it = list.iterator();

System.out.println("Tamanho da lista = " + list.size());

while(it.hasNext()){

TbEveParceirosId tbs = (TbEveParceirosId) it.next();

%>

ele imprimiu…
Tamanho da lista = 15344

bland

Santiago,

Estou no trabalho e aqui eu não tenho um exemplo para te mostrar.

Acho que já identifiquei o erro. O que está acontecendo é que você está fazendo o cast para o objeto errado. Você deveria pegar do seu Iterator o objeto TbEveParceiros né não?

Se você parar pra analisar ele dá erro depois de imprimir o tamanho do list. E está dando erro de ClassCastException. Deduzi que a classe que você está buscando do seu Iterator não é a classe correta.

Verifique isso e qualquer coisa posta aqui. Abraço!

F

Ja ajudou demais, nao vou tomar mais seu tempo… agora ja tenho um caminho a seguir aqui e quebro a cabeça sozinho. vc foi de grannde ajuda. muito obrigado e bom trabalho ai…

bland

De nada Santiago.

Eu gostaria de saber qual foi realmente o erro e seu eu consegui te ajudar a solucioná-lo. Eu agradeceria se pudesse me responder caso consiga solucionar o seu problema.

Abraço.

F

Ja funcionou.hahahaha brigadao… e pq o eclipse nao sei pq gerou um tbEventosParceiros.java e um tbEventosParceirosId.java nao sei pq fez isso mas daqui a pouco entendo essa @#$%… mas ja pegou aqui. muito obrigado

Criado 28 de julho de 2006
Ultima resposta 28 de jul. de 2006
Respostas 12
Participantes 3