Bom dia galera,
To começando agora com Hibernate e estou com um probleminha aki.....
É o seguinte:
Quando cadastro um novo usuário, só consigo fazer login com ele depois de dar um "clean and biuld project(netbeans 5.0)", antes disso fica retornando usuário inválido...
Não sei se fiz os métodos de forma correta....
se puderem me ajudar, agradeceria muito
package modelo;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import javax.persistence.*;
@Entity()
@Table(name="login")
public class Login extends org.apache.struts.action.ActionForm {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column()
private int cod;
@Column()
private String login;
@Column()
private String senha;
@Column()
private String perfil;
@Column()
private String nome;
//...getters e setters ...
package controle;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import modelo.Login;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForward;
import persistencia.LoginDao;
public class LoginAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
Login login = (Login)form;
LoginDao ld = new LoginDao();
String resp ="";
try{
if(ld.fazLogin(login)){
request.getSession().setAttribute("sessao",login.getLogin());
resp = "ok_login";
}
else{
request.setAttribute("erro","<img align='absmiddle' src='images/erro.gif'/> Usuário e/ou senha inválidos");
resp = "erro_login";
}
}catch(Exception e){
request.setAttribute("erro",e.getMessage());
resp = "erro_sistema";
}
return mapping.findForward(resp);
}
}
package persistencia;
import java.util.List;
import modelo.Login;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
public class LoginDao {
Session session;
Transaction transaction;
Query query;
Criteria criteria;
public boolean fazLogin(Login login)throws Exception{ //Faz login no sistema
session = HibernateUtil.getSession();
transaction = session.beginTransaction();
query = session.createQuery("from Login l where l.login = :login and l.senha = :senha");
query.setString("login",login.getLogin());
query.setString("senha",login.getSenha());
List lista = query.list();
if(lista.size()!=0){
return true;
}
else{
return false;
}
}
public List pegaNome(String sessao)throws Exception{
session = HibernateUtil.getSession();
transaction = session.beginTransaction();
query = session.createQuery("from Login lo where lo.login = :login");
query.setString("login",sessao);
return query.list();
}
public boolean verificaLogin(Login login)throws Exception{ //pra não deixar gravar 2 usuarios iguais
session = HibernateUtil.getSession();
transaction = session.beginTransaction();
query = session.createQuery("from Login log where log.login = :login");
query.setString("login",login.getLogin());
List lista = query.list();
if(lista.size()==0){
return true;
}
else{
return false;
}
}
public void gravaUsuario(Login login)throws Exception{
session = HibernateUtil.getSession();
transaction = session.beginTransaction();
session.save(login);
transaction.commit();
}
}
