Problemas com o Hibernate

8 respostas
smota

Ae Pessoal,

To usando o Hibernate para a seguinte classe:
/** @hibernate.class
 * 		table="SAS_Anormalidades"
 */
public class CadastroAnormalidade {
	private String codigo;
	private String descricao;
	
	/**
	 * @return
	 * @hibernate.id
	 * 	generator-class="native"
	 * 	column="Codigo_do_Problema"
	 */
	public String getCodigo() {
		return codigo;
	}

	/**
	 * @param codigo
	 */
	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}

	/**
	 * @return
	 * @hibernate.property
	 * 		column="Problema"
	 */
	public String getDescricao() {
		return descricao;
	}

	/**
	 * @param problema
	 */
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

}

Usando o Session do hibernate chamando: return conn.find("from CadastroAnormalidade a order by a.descricao");

Mas recebendo a exception abaixo:
(nota: mesma idéia com outros Cadastros funciona, soh nesse q tah xaropando)

net.sf.hibernate.QueryException: in expected: a [from CadastroAnormalidade a order by a.descricao] at net.sf.hibernate.hql.FromParser.token(FromParser.java:102) at net.sf.hibernate.hql.ClauseParser.token(ClauseParser.java:87) at net.sf.hibernate.hql.PreprocessingParser.token(PreprocessingParser.java:123) at net.sf.hibernate.hql.ParserHelper.parse(ParserHelper.java:29) at net.sf.hibernate.hql.QueryTranslator.compile(QueryTranslator.java:149) at net.sf.hibernate.hql.QueryTranslator.compile(QueryTranslator.java:138) at net.sf.hibernate.impl.SessionFactoryImpl.getQuery(SessionFactoryImpl.java:293) at net.sf.hibernate.impl.SessionImpl.getQueries(SessionImpl.java:1493) at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1464) at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1454) at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1446) at apps.database.dao.impl.ListasDAOOracle.find(ListasDAOOracle.java:58) at apps.netwalki.actions.ListarOpcoes.execute(ListarOpcoes.java:108) at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:173)

Idéias? Daniel "Hibernate" Man? alguem?

8 Respostas

Lorchaos

Tente especificar na query o nome da classe incluindo o package.

ricardolecheta

se for hibernate 2 esta certo a query, nao precisa colocar o pacote pq o hibernate sabe, sendo que vc adicionou esta classe no Configuration…

eu costumo fazer: “from CadastroAnormalidade as a”, mas nao sei se da diferença… coloco este “as” antes do alias

no hibernate 1 a sintaxe é: from <tabela> in class <classe>

Lorchaos

Eu tive o mesmo problema que o smota está tendo e estava usando o hibernate 2.

Você especifica o atributo package no hibernate-mapping?

smota

Povo … nao to entendendo …

O codigo pra outro bean, exatamente igual (inclusive usa o mesmo DAO) funciona (sem as, nem ass, nem nada) … gerando o SQL:

Hibernate: select cadastrode0_.Codigo_do_Defeito as Codigo_d1_, cadastrode0_.Defeito as Defeito from schema.tbl_Defeitos cadastrode0_ order by cadastrode0_.Defeito
2

alem desse mais 2 no mesmo esquema funcionam … só o danado ai de cima que não.

Idéias?

Daniel_Quirino_Olive
"smota":
Ae Pessoal, To usando o Hibernate para a seguinte classe:
/** @hibernate.class
 * 		table="SAS_Anormalidades"
 */
public class CadastroAnormalidade {
	private String codigo;
	private String descricao;
	
	/**
	 * @return
	 * @hibernate.id
	 * 	generator-class="native"
	 * 	column="Codigo_do_Problema"
	 */
	public String getCodigo() {
		return codigo;
	}

	/**
	 * @param codigo
	 */
	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}

	/**
	 * @return
	 * @hibernate.property
	 * 		column="Problema"
	 */
	public String getDescricao() {
		return descricao;
	}

	/**
	 * @param problema
	 */
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

}

Usando o Session do hibernate chamando: return conn.find("from CadastroAnormalidade a order by a.descricao");

Mas recebendo a exception abaixo:
(nota: mesma idéia com outros Cadastros funciona, soh nesse q tah xaropando)

net.sf.hibernate.QueryException: in expected: a [from CadastroAnormalidade a order by a.descricao] at net.sf.hibernate.hql.FromParser.token(FromParser.java:102) at net.sf.hibernate.hql.ClauseParser.token(ClauseParser.java:87) at net.sf.hibernate.hql.PreprocessingParser.token(PreprocessingParser.java:123) at net.sf.hibernate.hql.ParserHelper.parse(ParserHelper.java:29) at net.sf.hibernate.hql.QueryTranslator.compile(QueryTranslator.java:149) at net.sf.hibernate.hql.QueryTranslator.compile(QueryTranslator.java:138) at net.sf.hibernate.impl.SessionFactoryImpl.getQuery(SessionFactoryImpl.java:293) at net.sf.hibernate.impl.SessionImpl.getQueries(SessionImpl.java:1493) at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1464) at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1454) at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1446) at apps.database.dao.impl.ListasDAOOracle.find(ListasDAOOracle.java:58) at apps.netwalki.actions.ListarOpcoes.execute(ListarOpcoes.java:108) at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:173)

Idéias? Daniel "Hibernate" Man? alguem?

Hibernate 1, né?
Se for, o HQL deve ser:

conn.find("from SAS_Anormalidades in class CadastroAnormalidade order by SAS_Anormalidades.descricao");

Basicamente, a forma do HQL é:
from <tabela> in class <x.y.z.SuaClasse> where <tabela>.coluna = .

p.s.: Hibernate Man? Dado que eu ando dormindo quase 12 horas por dia, acho que o apelido caiu como uma luva.

smota

ops … Hibernate 2 mesmo …
2.1

Os que funcionam e o q nao funciona rodam com os mesmos JAR, JVM, BIOS, tudo igual :shock:

ricardolecheta

tente “from CadastroAnormalidade”, sem o order by…

smota

Aeees … foi muito mal pessoal.

O que faltava era adicionar a classe ao SessionFactory da aplicação que estava esquecido lá nas entranhas da danada :oops:

Criado 20 de janeiro de 2004
Ultima resposta 22 de jan. de 2004
Respostas 8
Participantes 4