Erro hibernate

8 respostas
P

está aparecendo o seguinte erro na linha 15

net.sf.hibernate.QueryException: undefined alias: 1 [ select 1 from gmat.persistencia.IndiceCorrecaoDO indCorrecao where indCorrecao.mesano =01/10/2005]

public boolean getDuplicado() throws Exception {  
       HibernatePersistenceManager pm = HibernateUtil.getPersistenceManager(this);  
        Session session = pm.getSession();  
         StringBuffer sql = new StringBuffer();  
         int anoForm = 0;  
       int mesForm = 0;  
           
        anoForm = this.indiceCorrecaoDO.getMesano().get(Calendar.YEAR);  
        mesForm = this.indiceCorrecaoDO.getMesano().get(Calendar.MONTH) + 1;  
        String data = ("01/"+mesForm+"/"+ anoForm);  
        sql.append(" select 1");  
         sql.append(" from IndiceCorrecaoDO indCorrecao");  
         sql.append(" where indCorrecao.mesano = " + data);  
         Query query = session.createQuery(sql.toString());  
         if(query.list().size()>0){  
            return true;  
         }else{  
            return false;  
         }  

     }

alguém pode ajudar?


8 Respostas

L

nao seria " select * "

E

Poderia me mandar o sql de criação da tabela, existe um campo chamado: “1” ??

P

Tirei aquele 1, mas agora tah dando outro erro:

net.sf.hibernate.exception.SQLGrammarException: Could not execute query

public boolean getDuplicado() throws Exception {
        HibernatePersistenceManager pm = HibernateUtil.getPersistenceManager(this);
        Session session = pm.getSession();
        StringBuffer sql = new StringBuffer();
        int anoForm = 0;
        int mesForm = 0;
        
        anoForm = this.indiceCorrecaoDO.getMesano().get(Calendar.YEAR);
        mesForm = this.indiceCorrecaoDO.getMesano().get(Calendar.MONTH) + 1;
        String data = (anoForm+"/"+mesForm+"/01");
        sql.append(" select indCorrecao");
        sql.append(" from IndiceCorrecaoDO indCorrecao");
        sql.append(" where indCorrecao.mesano = " + data);
        Query query = session.createQuery(sql.toString());
        if(query.list().size()>0){
        	return true;
        }else{
        	return false;
        }
        
    }

não entendo quase nada de SQL, está certa a minha sintaxe?

andreiribas

tenta fazer somente

sql.append("from IndiceCorrecaoDO indCorrecao");  
sql.append(" where indCorrecao.mesano = " + data);

outra coisa, o hibernate suporta named parameters, ou seja, você não precisa ficar quebrando a query em várias Strings, pode usar o nome de um parâmetro na query como variável, no caso colocando um : na frente.

por exemplo:

String query = "from IndiceCorrecaoDO indCorrecao where indCorrecao.mesano = :data";
Query q = new Query(query);
q.setParameter("data", "01/01/2008");
q.list();
P

entendi, mas para que 01/01/2008? se a data eu estou pegando do formulário.
e a q.list?

E

Se você quiser, tenho uma apostila de hibernate que foi por onde aprendi a grande parte do que sei sobre o assunto, muitos amigos meus da empresa a utilizam até hoje.
Me passe seu email

P

consegui solucionar o meu problema.
Obrigado.

P

to te mandando meu email por msg particular.

Criado 13 de fevereiro de 2008
Ultima resposta 13 de fev. de 2008
Respostas 8
Participantes 4