[RESOLVIDO] jse com hibernate e mysql

Boa tarde pessoal! Estou com um problema na minha aplicação desktop. Uso o hibernate e o banco é o mySQL 5.

O erro é o seguinte:
org.hibernate.QueryException: could not resolve property: idCurso of: dominio.Turma [SELECT p FROM dominio.Turma p where p.idCurso = ‘2’]
at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:44)
at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:38)
at org.hibernate.persister.entity.AbstractEntityPersister.toType(AbstractEntityPersister.java:1362)
at org.hibernate.hql.ast.tree.FromElementType.getPropertyType(FromElementType.java:279)
at org.hibernate.hql.ast.tree.FromElement.getPropertyType(FromElement.java:386)
at org.hibernate.hql.ast.tree.DotNode.getDataType(DotNode.java:566)
at org.hibernate.hql.ast.tree.DotNode.prepareLhs(DotNode.java:241)
at org.hibernate.hql.ast.tree.DotNode.resolve(DotNode.java:188)
at org.hibernate.hql.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:94)
at org.hibernate.hql.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:90)
at org.hibernate.hql.ast.HqlSqlWalker.resolve(HqlSqlWalker.java:727)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:1216)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.exprOrSubquery(HqlSqlBaseWalker.java:4041)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.comparisonExpr(HqlSqlBaseWalker.java:3525)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1762)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.whereClause(HqlSqlBaseWalker.java:776)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:577)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229)

e mais um monte de linha dando seqüência nisto ai.

Acontece que pelo que analisei está tudo certo:

Turma.java

[code]public class Turma implements java.io.Serializable {

private static final long serialVersionUID = 1L;
private int idTurma;
private Curso curso;
private String nome;
private String turno;
private Set<Matricula> matriculas = new HashSet<Matricula>(0);
private Set<Matricula> matriculas_1 = new HashSet<Matricula>(0);
private Set<Ministra> ministras = new HashSet<Ministra>(0);
private Set<Ministra> ministras_1 = new HashSet<Ministra>(0);
private static final HibernateRepositorio hibernateRepositorio = new HibernateRepositorio();

public Turma() {
}

public Turma(Curso curso, String nome, String turno) {
	this.curso = curso;
	this.nome = nome;
	this.turno = turno;
}

public Turma(Curso curso, String nome, String turno,
		Set<Matricula> matriculas, Set<Matricula> matriculas_1,
		Set<Ministra> ministras, Set<Ministra> ministras_1) {
	this.curso = curso;
	this.nome = nome;
	this.turno = turno;
	this.matriculas = matriculas;
	this.matriculas_1 = matriculas_1;
	this.ministras = ministras;
	this.ministras_1 = ministras_1;
}

            //GETTERS AND SETTERS

[/code]

Turma.hbm.xml

[code]<?xml version="1.0"?>

[/code]

hibernate.cfg.xml

[code]<?xml version="1.0" encoding="UTF-8"?>

com.mysql.jdbc.Driver jdbc:mysql://localhost/######## org.hibernate.dialect.MySQLDialect ###### ###### true update
    <!-- session mapping -->
    <mapping resource="Aluno.hbm.xml" />
    <mapping resource="Aula.hbm.xml" />
    <mapping resource="Banco.hbm.xml" />
    <mapping resource="Boleto.hbm.xml" />
    <mapping resource="Cartao.hbm.xml" />
    <mapping resource="Cheque.hbm.xml" />
    <mapping resource="ControleCheque.hbm.xml" />
    <mapping resource="Curso.hbm.xml" />
    <mapping resource="Materia.hbm.xml" />
    <mapping resource="Matricula.hbm.xml" />
    <mapping resource="Ministra.hbm.xml" />
    <mapping resource="Modulo.hbm.xml" />
    <mapping resource="OrgaoExpedidor.hbm.xml" />
    <mapping resource="PagarAula.hbm.xml" />
    <mapping resource="PagarAulaCheque.hbm.xml" />
    <mapping resource="PagarMatricula.hbm.xml" />
    <mapping resource="Professor.hbm.xml" />
    <mapping resource="Turma.hbm.xml" />
    <mapping resource="Usuario.hbm.xml" />

</session-factory>
[/code]

Método que está gerando este erro, que se encontra na classe HibernateRepositorio.java

	public ArrayList<Object> consultarPor(Object objeto, String atributo, Object campo) throws HibernateException {
		
		ArrayList<Object> listaObjetos = new ArrayList<Object>();
		try {
			session = HibernateUtil.currentSession();
			Query query = session.createQuery("SELECT p FROM " + objeto.getClass().getName() + " p where p." + atributo + " = '" + campo + "'");
			
			for(Iterator it=query.iterate();it.hasNext();){
				listaObjetos.add(it.next());
			}
		} catch (Exception e) {
			session.cancelQuery();
			e.printStackTrace();
		} finally {
			HibernateUtil.sessionClose();
		}
		return listaObjetos;
	}

Alguém poderia desvendar este mistério? :?

Você já testou a query no mysql?

já testei brother, e deu certo… só aqui no hibernate é que não está funcionando… :S

FROM Turma p where p.curso.idCurso = '2';

Tenta assim

Abraços

Mesma coisa, só muda que agora ele está chamando na classe Curso:

org.hibernate.QueryException: could not resolve property: id_curso of: dominio.Curso [FROM dominio.Turma p where p.curso.id_curso = ‘2’]
at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:44)
at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:38)
at org.hibernate.persister.entity.AbstractEntityPersister.toType(AbstractEntityPersister.java:1362)
at org.hibernate.hql.ast.tree.FromElementType.getPropertyType(FromElementType.java:279)
at org.hibernate.hql.ast.tree.FromElement.getPropertyType(FromElement.java:386)
at org.hibernate.hql.ast.tree.DotNode.getDataType(DotNode.java:566)
at org.hibernate.hql.ast.tree.DotNode.prepareLhs(DotNode.java:241)
at org.hibernate.hql.ast.tree.DotNode.resolve(DotNode.java:188)
at org.hibernate.hql.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:94)
at org.hibernate.hql.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:90)
at org.hibernate.hql.ast.HqlSqlWalker.resolve(HqlSqlWalker.java:727)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:1216)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.exprOrSubquery(HqlSqlBaseWalker.java:4041)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.comparisonExpr(HqlSqlBaseWalker.java:3525)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1762)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.whereClause(HqlSqlBaseWalker.java:776)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:577)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229)
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:228)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:160)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
at org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:77)
at org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:56)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1627)
at repositorio.HibernateRepositorio.consultarPor(HibernateRepositorio.java:131)
at apresentacao.teste1.main(teste1.java:49)

alguém pode ajudar pelo amor de Jah?!

Se ta usando o hibernate por que não fazer a Query com ele?
Isso:

Query query = session.createQuery("SELECT p FROM " + objeto.getClass().getName() + " p where p." + atributo + " = '" + campo + "'");   
           
        for(Iterator it=query.iterate();it.hasNext();){   
            listaObjetos.add(it.next());   
        }

Fica:

Criteria crit = session.createCriteria(objeto.getClass());
crit.addRestriction(Restrictions.eq(atributo,campo)); 
      listaObjetos = crit.list();

Valeu galera, acredito que conseguimos resolver essa bronca.

1º problema: estava passando o parâmetro errado… em vez de id_curso deve ser idCurso por causa do mapeamento feito no xml…

2º problema: qnd ele pega esta turma, que pertence ao curso ‘2’ como eu pedia no exemplo acima, ele estava mandando tudo certinho. Não conseguia pegar o nome do curso pq ele só setava o id do curso, ou seja, após pegar a turma, eu devo listar o curso que tem o id desta turma e dps dar um turma.setCurso(“cursoBuscado”) - curso buscado no banco de dados.

Obrigado.