1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Utilizando Criteria para consulta

Preciso listar os recado de um usuario mas esta lista deve ter por critério o usuario que esta logado em que ele esta cadastrado.

CLASSE PESSOA

@Entity
public class Usuario implements Serializable {

    private static final long    serialVersionUID    = 2471765773806278661L;
    @Id
    @GeneratedValue
    private Integer               codigo;
    private String               nome;
    private String               email;
    @org.hibernate.annotations.NaturalId
    private String               login;
    private String               senha;
    private Date               nascimento;
    private String               celular;    
    private boolean               ativo;

      @OneToMany(mappedBy = "usuario")
        private List<Recado> recado;

      @OneToMany(mappedBy = "usuario")
        private List<Nota> nota;

    @ManyToOne
    @JoinColumn(name= "setor", nullable = true)
    private Setor setor;

CLASSE RECADO

@Entity
public class Recado implements Serializable{

    /**
     * 
     */
    private static final long serialVersionUID = 5432774022517305477L;
    @Id
    @GeneratedValue
    private Integer id;
    private String descricao;
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date datarecado;


    @ManyToOne
    @JoinColumn(name= "usuario", nullable = true)
    private Usuario usuario;
    @ManyToOne
    @JoinColumn(name = "setor", nullable = true)    
    private Setor setor;

O código abaixo eu estou pegando o usuario logado e preciso usar ele como critério de pesquisa na QUERY que irei montar, mas não sei como fazer isto.

public List<Recado> getLista() {
    FacesContext context = FacesContext.getCurrentInstance();
        ExternalContext external = context.getExternalContext();
        String login = external.getRemoteUser();

        UsuarioRN usuarioRN = new UsuarioRN();
            usuario = usuarioRN.buscarPorLogin(login);

QUERY.....

}

Seria mais ou menos assim SELECT * FROM Recado rec INNER JOIN USUARIO use ON (rec.Setor = use.Setor) e rec.usuario = use.usuario

RESOLVIDO

 @Override
    public List<Recado> listar(){  

        FacesContext context = FacesContext.getCurrentInstance();
        ExternalContext external = context.getExternalContext();
        String login = external.getRemoteUser();

        UsuarioRN usuarioRN = new UsuarioRN();

        usuario = usuarioRN.buscarPorLogin(login);

                Criteria criteria = session.createCriteria(Recado.class);
                criteria.add(Restrictions.eq("setor", usuario.getSetor()));
                return criteria.list();}

VLW PESSOAL

  • Que bom que resolveu brother , só mais uma, vc usa esses caras do 'context' isoladamente ?. Se 'não' encurta esse cara ai String login = FacesContext.getCurrentInstance().getExternalContext().getRemoteUser(); acho que fica até mais tranquilo pra entender e ainda é elegante. Isso é só uma dica !falow !

    Ferrete   29 de abr de 2014
  • Brother, só pra constar, marque a resposta como correta quando ela lhe foi útil(no caso resolvendo o problema).Isso evita de ter de colocar resolvido e a resposta no corpo da pergunta.valew

    Ferrete   09 de mai de 2014
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags hibernate java-ee ou faça a sua própria pergunta.