Ajuda com Hibernate+mysql Linux [RESOLVIDO]

2 respostas
tiagofrutuoso

Dae pessoal,

Seguinte, estou com problema com uma aplicação minha para poder logar no site, antes eu usava Windows(Eclipse+java+Mysql) funcionava direitinho, agora que estou usando Linux(Eclipse+java+Mysql) esta dando o seguinte erro:

exception

javax.servlet.ServletException: usuario is not mapped [select u from usuario as u where u.login = :login and u.senha = :senha ]

org.vraptor.http.DefaultDispatcher.dispatch(DefaultDispatcher.java:69)

org.vraptor.VRaptorServlet.service(VRaptorServlet.java:48)

javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause

org.hibernate.hql.ast.QuerySyntaxException: usuario is not mapped [select u from usuario as u where u.login = :login and u.senha = :senha ]

org.hibernate.hql.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:181)

org.hibernate.hql.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:110)

org.hibernate.hql.ast.tree.FromClause.addFromElement(FromClause.java:93)

org.hibernate.hql.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:277)

org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3056)

org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:2945)

org.hibernate.hql.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:688)

org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:544)

org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281)

org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229)

org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:251)

org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:183)

org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:134)

org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:101)

org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:80)

org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:94)

org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156)

org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135)

org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1650)

br.com.caelum.lojavirtual.dao.UsuarioDao.existeUnico(UsuarioDao.java:16)

br.com.caelum.lojavirtual.logic.AdminLogic.efetuaLogin(AdminLogic.java:31)

sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

java.lang.reflect.Method.invoke(Method.java:616)

org.vraptor.component.DefaultLogicMethod.execute(DefaultLogicMethod.java:61)

org.vraptor.interceptor.ExecuteLogicInterceptor.intercept(ExecuteLogicInterceptor.java:32)

org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)

org.vraptor.interceptor.SettingAndValidationInterceptor.intercept(SettingAndValidationInterceptor.java:130)

org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)

org.vraptor.interceptor.InjectionInterceptor.intercept(InjectionInterceptor.java:41)

org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)

org.vraptor.interceptor.ComponentLookupInterceptor.intercept(ComponentLookupInterceptor.java:57)

org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)

br.com.caelum.lojavirtual.loja.DaoInterceptor.intercept(DaoInterceptor.java:18)

org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)

org.vraptor.interceptor.FlashScopeInterceptor.intercept(FlashScopeInterceptor.java:22)

org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)

org.vraptor.interceptor.RegisterAttributesInteceptor.intercept(RegisterAttributesInteceptor.java:47)

org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)

org.vraptor.core.VRaptorExecution.execute(VRaptorExecution.java:97)

org.vraptor.core.DefaultController.execute(DefaultController.java:46)

org.vraptor.http.DefaultDispatcher.dispatch(DefaultDispatcher.java:44)

org.vraptor.VRaptorServlet.service(VRaptorServlet.java:48)

javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

Segue abaixo minhas classes:

UsuarioDao.java

import org.hibernate.Query;
import org.hibernate.Session;

import br.com.caelum.lojavirtual.modelo.Usuario;

public class UsuarioDao extends Dao<Usuario> {
	
	public UsuarioDao(Session session) {
		super(session, Usuario.class);
	}
	
	public Usuario existeUnico(Usuario usuario) {
		String hql = "select u from usuario as u where u.login = :login and u.senha = :senha ";
		Query query = getSession().createQuery(hql);
		query.setParameter("login", usuario.getLogin());
		query.setParameter("senha", usuario.getSenha());
		return (Usuario) query.uniqueResult();
	}
}

DaoFactory.java

import org.hibernate.Session;
import org.hibernate.Transaction;

import br.com.caelum.lojavirtual.modelo.Cd;
import br.com.caelum.lojavirtual.modelo.Musica;
import br.com.caelum.lojavirtual.modelo.Venda;
import br.com.caelum.lojavirtual.util.HibernateUtil;

public class DaoFactory {
	
	private final Session session;
	private Transaction transaction;
	
	public DaoFactory() {
		session = HibernateUtil.getSession();
	}
	
	public void beginTransaction() {
		this.transaction = this.session.beginTransaction();
	}
	
	public void commit() {
		this.transaction.commit();
		this.transaction = null;
	}
	
	public boolean hasTransaction() {
		return this.transaction != null;
	}
	
	public void rollback() {
		this.transaction.rollback();
		this.transaction = null;
	}
	
	public void close() {
		this.session.close();
	}
	
	public UsuarioDao getUsuarioDao() {
		return new UsuarioDao(this.session);
	}
	
	public Dao<Cd> getCdDao() {
		return new Dao<Cd>(this.session, Cd.class);
	}
	
	public Dao<Musica> getMusicaDao() {
		return new Dao<Musica>(this.session, Musica.class);
	}
	
	public Dao<Venda> getVendaDao() {
		return new Dao<Venda>(this.session, Venda.class);
	}

}

Usuario.java

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Usuario {

	@Id
	@GeneratedValue
	private Long id;
	private String login;
	private String senha;
	private String role;
	
	public String getRole() {
		return role;
	}
	public void setRole(String role) {
		this.role = role;
	}
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getLogin() {
		return login;
	}
	public void setLogin(String login) {
		this.login = login;
	}
	public String getSenha() {
		return senha;
	}
	public void setSenha(String senha) {
		this.senha = senha;
	}
	
	public boolean hasRole(String s) {
		// role com espaco antes e depois
		String role = " " + this.role + " ";
		
		// verifica se tem o role
		return role.contains(" " + s + " ");
	}
}

hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
		"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
		"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <!-- <property name="hibernate.connection.url">jdbc:mysql://localhost/teste</property> -->
        <property name="hibernate.connection.url">jdbc:mysql://localhost/teste</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">root1@</property>
        
        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.format_sql">true</property>
        
        <mapping class="br.com.caelum.lojavirtual.modelo.Usuario"/>
        <mapping class="br.com.caelum.lojavirtual.modelo.Cd"/>
        <mapping class="br.com.caelum.lojavirtual.modelo.Musica"/>
        <mapping class="br.com.caelum.lojavirtual.modelo.Venda"/>
    </session-factory>
</hibernate-configuration>

AdminLogic.java //para efetuar o login

import org.vraptor.annotations.Component;
import org.vraptor.annotations.InterceptedBy;
import org.vraptor.annotations.Out;
import org.vraptor.scope.ScopeType;

import br.com.caelum.lojavirtual.dao.DaoFactory;
import br.com.caelum.lojavirtual.dao.UsuarioDao;
import br.com.caelum.lojavirtual.loja.DaoInterceptor;
import br.com.caelum.lojavirtual.modelo.Usuario;

@Component("admin")
@InterceptedBy(DaoInterceptor.class)
public class AdminLogic {

	private final DaoFactory daoFactory;
	
	private Usuario usuario;
	
	public AdminLogic(DaoFactory daoFactory) {
		this.daoFactory = daoFactory;
	}
	
	public void login() {
		
	}
	
	public String efetuaLogin(Usuario usuario) {
		UsuarioDao dao = this.daoFactory.getUsuarioDao();
		this.usuario = dao.existeUnico(usuario);
		
		if (this.usuario != null) {
			return "ok";
		} else {
			return "invalid";
		}
	}
	
	public void logout() {
		this.usuario = null;
	}
	
	@Out(scope=ScopeType.SESSION)
	public Usuario getUsuario() {
		return usuario;
	}
}

Dao.java

import java.util.List;

import org.hibernate.Session;

public class Dao<T> {
	
	private final Session session;
	private final Class classe;
	
	public Dao(Session session, Class classe) {
		this.session = session;
		this.classe = classe;
	}
	
	public void adiciona(T u) {
		this.session.save(u);
	}
	
	public void remove(T u) {
		this.session.delete(u);
	}
	
	public void atualiza(T u) {
		this.session.merge(u);
	}
	
	public List<T> listaTudo() {
		return this.session.createCriteria(this.classe).list();
	}
	
	public T procura(Long id) {
		return (T) session.load(this.classe, id);
	}
	protected Session getSession() {
		return session;
	}
}

Sera que alguem pode me dar uma força para saber onde estou errando.

Agradeço desde já a atenção de todos.

2 Respostas

tiagofrutuoso

Boa tarde,

Será que no Linux, a criação de um banco de dados é diferente para a criação do banco de dados em Windows??

Alguem pode me ajudar com esse probleminha???

tiagofrutuoso

Pessoal, já achei o problema. tive que refazer todo o meu banco de dados.

Criado 1 de março de 2010
Ultima resposta 2 de mar. de 2010
Respostas 2
Participantes 1