Ola a todos,
Estou usando o Eclipse no Ubuntu.
Estou tentando ha dias fazer uma tela de login com JSF e Postgres, configurei o projeto usando o Maven. Ja pesquisei em varios foruns mas não conseguir resolver essa exception. Já postei aqui tambem, como ninguem respondeu estou tentando novamente.
Irei postar colocar abaixo as classes e xml, para vê se algum cristão de boa alma me ajuda.
Primeiro eu configurei hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory name="">
<property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
<property name="hibernate.connection.password">93156824</property>
<property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/mercantilvirtual</property>
<property name="hibernate.connection.username">postgres</property>
<property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
<property name="transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
<property name="current_session_context_class">thread</property>
<property name="show_sql">true</property>
<property name="hibernate.current_session_context_class">thread</property>
<mapping class="com.mercantilvirtual.entities.Usuarios_pdv"/>
</session-factory>
</hibernate-configuration>
Depos Configurei o hibernate.reveng.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-reverse-engineering PUBLIC "-//Hibernate/Hibernate Reverse Engineering DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd" >
<hibernate-reverse-engineering>
<schema-selection match-catalog="mercantilvirtual" />
<table-filter match-name="usuarios_pdv" />
<table schema="public" name="usuarios_pdv" catalog="">
<column name="foto"></column>
<column name="cod_grupos"></column>
<column name="lng"></column>
<column name="abre_preco"></column>
<column name="email"></column>
<column name="login"></column>
<column name="senha"></column>
<column name="situacao"></column>
<column name="lat"></column>
<column name="nome"></column>
<column name="ip"></column>
<column name="ultimo_login"></column>
<column name="cod_referencia"></column>
<column name="imagem"></column>
<column name="cod_usuario"></column>
<column name="frase"></column>
</table>
</hibernate-reverse-engineering>
Assim configurei o HibernateUtil
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
private static SessionFactory sessionFactory ;
static {
Configuration configuration = new Configuration().configure();
StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder()
.applySettings(configuration.getProperties());
sessionFactory = configuration.buildSessionFactory(builder.build());
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
Então configurei a classe com a tabela
import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Embeddable
@Entity
@Table(name = "usuarios_pdv", schema = "public")
public class Usuarios_pdv implements java.io.Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="cod_usuario", nullable=false, unique=true)
private int cod_usuario;
@Column(name = "login", length = 32)
private String login;
@Column(name = "senha", length = 32)
private String senha;
@Column(name = "nome", length = 100)
private String nome;
public String getLogin() {
return this.login;
}
public void setLogin(String login) {
this.login = login;
}
public String getSenha() {
return this.senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public String getNome() {
return this.nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
Nessa classe fiz a consulta
import java.util.List;
import org.apache.log4j.Logger;
import org.hibernate.Session;
import com.mercantilvirtual.entities.Usuarios_pdv;
import com.mercantilvirtual.util.*;
public class UsuarioDAO {
private Session session;
private Logger logger;
public Usuarios_pdv verificaDados(String login, String senha) throws Exception {
Usuarios_pdv us = null;
logger = Logger.getLogger(UsuarioDAO.class);
logger.info("Classe DAO");
try{
String log = MD5(login);
String pwd = MD5(senha);
session = HibernateUtil.getSessionFactory().openSession();
String hql = "FROM usuarios_pdv where login='" + log + "' and senha= '" + pwd + "'";
logger.info(hql);
List<?> query = session.createQuery(hql).list();
if(!query.isEmpty()){
us = (Usuarios_pdv) query.get(0);
}
} catch(Exception E){
throw E;
}
return us;
}
public String MD5(String md5) {
try {
java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
byte[] array = md.digest(md5.getBytes());
StringBuffer sb = new StringBuffer();
for (int i = 0; i < array.length; ++i) {
sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(1,3));
}
return sb.toString();
} catch (java.security.NoSuchAlgorithmException e) {
}
return null;
}
}
e aqui faço a consulta
import java.io.Serializable;
import javax.faces.bean.SessionScoped;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;
import org.apache.log4j.Logger;
import com.mercantilvirtual.dao.UsuarioDAO;
import com.mercantilvirtual.entities.Usuarios_pdv;
@ManagedBean(name = "loginBean")
@SessionScoped
public class Login implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private String mensagem;
public UsuarioDAO usuarioDAO;
public Usuarios_pdv usuario;
private Logger logger;
public Login(){
usuarioDAO = new UsuarioDAO();
usuario = new Usuarios_pdv();
}
public String VerificaLogin() throws Exception{
logger = Logger.getLogger(UsuarioDAO.class);
logger.info("Iniciando aplicação");;
usuario = usuarioDAO.verificaDados(usuario.getLogin(), usuario.getSenha());
if (usuario == null) {
usuario = new Usuarios_pdv();
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Usuário não encontrado!",
"Erro no Login!"));
return null;
} else {
return "/main";
}
}
public Usuarios_pdv getUsuario() {
return usuario;
}
public void setUsuario(Usuarios_pdv usuario) {
this.usuario = usuario;
}
public String getMensagem() {
return mensagem;
}
public void setMensagem(String mensagem) {
this.mensagem = mensagem;
}
}
e aqui o XHTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>Sistema de Login</title>
</h:head>
<h:body>
<h:form>
<h:panelGrid>
<h:outputLabel value="Usuario"></h:outputLabel>
<h:inputText value="#{loginBean.usuario.login}"></h:inputText>
<h:outputLabel value="Senha"></h:outputLabel>
<h:inputSecret value="#{loginBean.usuario.senha}"></h:inputSecret>
<h:commandButton value="Entrar" action="#{loginBean.VerificaLogin()}" />
</h:panelGrid>
</h:form>
<h:outputText value="#{loginBean.mensagem}"></h:outputText>
</h:body>
</html>
Já tentei de varias forma e sempre sai esse erro:
Caused by: java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: usuarios_pdv is not mapped [FROM usuarios_pdv where login='ca382c459730f15d43bbf7dd58b5ab5e' and senha= 'c68d10d0a941736165eac6ee50b41343']
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:133)
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:157)
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:164)
at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:670)
at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:103)
at com.mercantilvirtual.dao.UsuarioDAO.verificaDados(UsuarioDAO.java:27)
at com.mercantilvirtual.login.Login.VerificaLogin(Login.java:35)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at javax.el.ELUtil.invokeMethod(ELUtil.java:311)
at javax.el.BeanELResolver.invoke(BeanELResolver.java:415)
at javax.el.CompositeELResolver.invoke(CompositeELResolver.java:256)
at com.sun.el.parser.AstValue.invoke(AstValue.java:285)
at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:304)
at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40)
at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40)
at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
... 46 more
Espero que alguem possa me dizer onde estou errando!
Obrigado.