Tomando uma surra do hibernate - denovo

8 respostas
thiago.fernandes

Fala galera,

to com um problema aqui e não estou conseguindo resolver. estou tentando ultilizar annotations para trabalhar com hibernate, e estou com um erro que não estou conseguindo identificar como resolver o mesmo:

Usuario.class

@Entity
@Table(schema="cf", name = "cf_systemusers")
public class Usuario implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column (name="id", insertable=false, updatable=false)
    private Integer idUsuario;
    @Column(name = "login", length = 255, nullable = true)
    private String login;
    @Column(name = "senha", length = 255, nullable = true)
    private String senha;
    @Column(name = "statos", nullable = true)
    private Boolean status;

    getters e setters

}

HibernateUtility

static {
            try {
                AnnotationConfiguration conf = new AnnotationConfiguration();
                conf.configure();

                factory = conf.buildSessionFactory();
            }catch (Throwable ex) {
                throw new ExceptionInInitializerError(ex.getMessage());
            }
        }
        
        public static Session getSession() {
            return factory.openSession();
        }

UsuarioDao

public class UsuarioDao implements InterfaceUsuario {
    private Session sessao;
    public UsuarioDao () throws HibernateException {
        try {
            sessao = HibernateUtility.getSession();
        }catch (HibernateException e) {
            throw new HibernateException(e.getMessage());
        }
    }

    public Usuario logar(Usuario usuario) throws HibernateException {
        try {
            sessao.beginTransaction();  
            Query sql = sessao.createQuery("from Usuario where login = :login");
                sql.setParameter("login", usuario.getLogin());
                usuario = (Usuario) sql.uniqueResult();
            return usuario;
        }catch (HibernateException e) {
            throw new HibernateException (e.getMessage());
        }finally {
            sessao.close();
        }
    }
}

estou usando o hibernate com o struts, mas quando digito um usuário e uma senha ele me gera o erro abaixo:

exception

javax.servlet.ServletException: java.lang.Exception: could not execute query
	org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:520)
	org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:427)
	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

root cause

java.lang.Exception: could not execute query
	com.appcf.actions.logar.execute(logar.java:54)
	org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:425)
	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

algum genio pode me dar uma luz. eu estava usando o hibernate com mapeamento no xml e estava tudo tranquilo, agora estou tentando fazer com annotatios, mas não consigo resolver esse problema.

Grato a todos desde já.
Att,

8 Respostas

romarcio

Não parece ter nada de errado.O hibernate está montando o SQL da consulta?

Marky.Vasconcelos

Voce tem um arquivo hibernate.properties onde mapeia as classes? Ou então voce precisa colocar

AnnotationConfiguration conf = new AnnotationConfiguration();   
        conf.configure();   
conf.addAnnotatedClass(  
        factory = conf.buildSessionFactory();

PS: Movido para Framework e Utilitarios

adriano_si

Cara… pega o SQL gerado pelo Hibernate e dá uma olhada… se não estiver aparecendo no Log do Sistema, vai no teu arquivo de configuração do Hibernate e adiciona a prop. hibernate.show_sql com o valor true e posta o resultado do SQL aqui…

Não sei se o createQuery adiciona a palavra “select” pra ti… talves seja isso… põe esse select gerado aí…

thiago.fernandes

Fala meus queridos!!

desculpa a demora, mas não estava recebdo os avisos de resposta pelo email, consegui resolver o problema, a exception estava mei oque mascarada pela action do struts, ele não conseguia executar a query pois tinha um erro de digitação no campo status no mapeamento da tabela, consegui resolver aqui!

agradeço a todos, como sempre as pessoas estão dispostas a ajudar, isso que me faz sempre confiar nesse forum.

Att,

robson.simonassi

Amigo,

Você colocou suas classes no “hibernate.cfg.xml”?

<mapping class="Modelo.Entidade.Perfil"/> <mapping class="Modelo.Entidade.TipoCaixa"/>

Veja se ajuda este link:

http://www.guj.com.br/posts/list/106815.java

thiago.fernandes

fala cara, eu tinha conseguido resolver, o problema era a acnotação da coluna status que estava com o nome errado

error de principiante rsrs.

robson.simonassi

Amigo,

É assim que se aprende, estamos sempre aprendendo tendo 10 ou 20 anos de experiencia.

Abraço e boa sorte.

thiago.fernandes

vlw meu querido!!
to aqui seguindo em frente e adorando esse tal de annotations rsrsrs

Criado 23 de setembro de 2010
Ultima resposta 23 de set. de 2010
Respostas 8
Participantes 5