Java - Error entre clase Dao y Bean

   
Vista:

Error entre clase Dao y Bean

Publicado por Ana Torres (5 intervenciones) el 08/08/2016 16:52:33
Hola, tengo un problema me encuentro haciendo un login con jsf e hibernate, hago la consulta entre 3 tablas, pido la id y la contraseña y me devuelve el nombre del cargo y en el bean dependiendo del cargo tiene que ir a una vista distinta, pero hago la consulta en el dao y en el bean manda eso como nulo, cuando pongo la consulta en mysql me muestra las datos y hago un paso a paso en netbeans y trae los datos, no se realmente que puede ser

esta es la clase dao, el metodo donde esta la consulta

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public Instructor finbyUsuario(Instructor instructor) {
        Instructor model = null;
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction transaction = session.beginTransaction();
        String sql = "select cargo.Nombre from instructor INNER JOIN (cargo INNER JOIN asignacion_cargo_instructor ON cargo.CodCargo = asignacion_cargo_instructor.fkCodCargo) ON asignacion_cargo_instructor.fkIdInstructor = instructor.Id where instructor.idInstructor= '"+instructor.getIdInstructor()+"' and instructor.ClaveInstructor='"+instructor.getClaveInstructor()+"'";
 
        try {
            session.createSQLQuery(sql).addEntity("cargo", Cargo.class).addEntity("instructor", Instructor.class).addEntity("asignacion_cargo_instructor",AsignacionCargoInstructor.class);
            transaction.commit();
            session.close();
        } catch (Exception e) {
            transaction.rollback();
        }
        return model;
    }


y este es el bean

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
private Instructor instructor;
    private UsuarioDao usuarioDao;
 
    public loginBean() {
        this.usuarioDao = new UsuarioDaoImp();
        if (this.instructor == null) {
            this.instructor = new Instructor();
        }
    }
 
    public Instructor getInstructor() {
        return instructor;
    }
 
    public void setInstructor(Instructor instructor) {
        this.instructor = instructor;
    }
 
 
    public String login(ActionEvent event) {
        RequestContext context = RequestContext.getCurrentInstance();
        FacesMessage message;
        boolean loggedIn;
 
 
        this.instructor = this.usuarioDao.finbyUsuario(this.instructor);
 
        try{
 
            if(this.instructor.equals("Líder del programa")){
                    loggedIn = true;
                    FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("instructor", this.instructor.getIdInstructor());
                    return "views/inicio.xhtml";
            }
            if(this.instructor.equals("Instructor Líder de Área")){
                    loggedIn = true;
                    FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("instructor", this.instructor.getIdInstructor());
                    return "views/inicio.xhtml";
            }
            if(this.instructor.equals("Instructor etapa lectiva")){
                    loggedIn = true;
                    FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("instructor", this.instructor.getIdInstructor());
                    return "views/inicio2.xhtml";
            }
            if(this.instructor.equals("Instructor etapa productiva")){
                    loggedIn = true;
                    FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("instructor", this.instructor.getIdInstructor());
                    return "views/inicio.xhtml";
            }
            else {
            loggedIn = false;
            message = new FacesMessage(FacesMessage.SEVERITY_WARN, "Loggin Error", "Usuario y/o Clave es incorrecto");
            this.usuarioDao = new UsuarioDaoImp();
            if (this.instructor == null) {
                this.instructor = new Instructor();
            }
 
        }
 
        }catch(Exception e){
            message = new FacesMessage(FacesMessage.SEVERITY_WARN, "Loggin Error", "Usuario y/o Clave es incorrecto");
                }
      return "login.xhtml";
    }
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Error entre clase Dao y Bean

Publicado por Javier (6 intervenciones) el 11/08/2016 08:39:16
Hola

1.-Toma en cuenta que tu clase Dao debe implementar Serialize si no va a poder ser soportada desde un Bean.
2.-Modifica tu funcion :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public Instructor finbyUsuario(Instructor instructor) {
 
        Instructor model = null;
 
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
 
        Transaction transaction = session.beginTransaction();
 
        String sql = "select cargo.Nombre from instructor INNER JOIN (cargo INNER JOIN asignacion_cargo_instructor ON cargo.CodCargo = asignacion_cargo_instructor.fkCodCargo) ON asignacion_cargo_instructor.fkIdInstructor = instructor.Id where instructor.idInstructor= '"+instructor.getIdInstructor()+"' and instructor.ClaveInstructor='"+instructor.getClaveInstructor()+"'";
 
 
 
        try {
 
            session.createSQLQuery(sql).addEntity("cargo", Cargo.class).addEntity("instructor", Instructor.class).addEntity("asignacion_cargo_instructor",AsignacionCargoInstructor.class);
 
          model = (Instructor ) query.uniqueResult();  //aca recien obtienes el resultado de tu consulta
 
            transaction.commit();
            //con hibernate no es necesario cerrar las sesiones, es mejor trabajar con un pool de conexiones 
        } catch (Exception e) {
 
            transaction.rollback();
 
        }
 
        return model;
 
    }
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error entre clase Dao y Bean

Publicado por Ana Torres (5 intervenciones) el 12/08/2016 02:43:41
Hola

Lo primero que me dices es que implemente el serialializable

En mi paquete DAO yo tengo dos clases, una interface donde creo el método

1
2
3
4
public interface UsuarioDao {
 
    public Instructor finbyUsuario(Instructor instructor);
}

y la implemento en la otra clase que es donde me encuentro realizando la consulta.

Ahora, bueno, hice el cambio de las sesiones que me dijiste y veo que agregaste la linea de código:

1
model = (Instructor ) query.uniqueResult();

y después de esa parte ya se daña y se salta al catch
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar