Filtrar dados interligando 3 Tabelas

2 respostas
H

Ola pessoal, estou com o seguinte problema:
Preciso realizar um filtro no banco de dados e retornar 3 informaçoes.

SELECT p.nomeDespesa, p.dataPagar, p.valorPagar FROM Pagar p
WHERE Usuarios.idUsuario = Contas.idUsuario
AND Contas.idConta = Pagar.idConta
AND Contas.status = “ABERTO”

sendo que o idUsuario eh passado como parametro.
A minha duvido eh como representar isto no Hibernate.
O que quero dizer eh como fazer a HQL para trazer esses dados.

2 Respostas

Danilo_Carvalho

Bom dia, já que você quer fazer com HQL porque não faz com Objetos?

Mas se quer fazer desta forma, mande como você mapeou o relacionamentos.

Até mais.

H
[size=18]Classe usuario[/size]
package Model;

import java.io.Serializable;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 *
 * Classe responsável por modelar os dados dos usuários do sistema
 *
 * @author
 * @since 15/11/2012 15:55:53
 * @version 1.0
 */
@Entity
@Table(name = "usuario")
@NamedQueries({
    @NamedQuery(name="Usuario.find",query="SELECT usuario FROM UsuarioVO usuario WHERE usuario.loginUsuario=:login AND usuario.senhaUsuario=:senha"),
    @NamedQuery(name="UsuarioVO.getAll", query="SELECT e FROM UsuarioVO e")
})
public class UsuarioVO implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id")
    private Integer idUsuario;
    @Column(name = "nome", nullable = true, length = 50)
    private String nomeUsuario;
    @Column(name = "login", nullable = true, length = 20, unique = true)
    private String loginUsuario;
    @Column(name = "senha", nullable = true, length = 8)
    private String senhaUsuario;
    
    

    /**
     * @return the idUsuario
     */
    public Integer getIdUsuario() {
        return idUsuario;
    }

    /**
     * @param idUsuario the idUsuario to set
     */
    public void setIdUsuario(Integer idUsuario) {
        this.idUsuario = idUsuario;
    }

    /**
     * @return the nomeUsuario
     */
    public String getNomeUsuario() {
        return nomeUsuario;
    }

    /**
     * @param nomeUsuario the nomeUsuario to set
     */
    public void setNomeUsuario(String nomeUsuario) {
        this.nomeUsuario = nomeUsuario;
    }

    /**
     * @return the loginUsuario
     */
    public String getLoginUsuario() {
        return loginUsuario;
    }

    /**
     * @param loginUsuario the loginUsuario to set
     */
    public void setLoginUsuario(String loginUsuario) {
        this.loginUsuario = loginUsuario;
    }

    /**
     * @return the senhaUsuario
     */
    public String getSenhaUsuario() {
        return senhaUsuario;
    }

    /**
     * @param senhaUsuario the senhaUsuario to set
     */
    public void setSenhaUsuario(String senhaUsuario) {
        this.senhaUsuario = senhaUsuario;
    }
}

[size=18]Classe Contas[/size]

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Model;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 *
 * @author Joao Garbiere
 */
@Entity
@Table(name = "contas")
@NamedQueries({
    @NamedQuery(name="ContasVO.getAll", query="SELECT e FROM ContasVO e")
})

public class ContasVO implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "idContas")
    private Integer idContas;
    @Column(name = "status", nullable = false, length = 10)
    private String status;
    @Column(name = "descricao", nullable = false, length = 50)
    private String descricao;
    
    @ManyToOne(cascade = CascadeType.ALL, targetEntity = CategoriaVO.class, fetch = FetchType.EAGER)
    @JoinColumn(name = "ce_categoria")
    private CategoriaVO categoriaVO;
   
    @ManyToOne(cascade = CascadeType.ALL, targetEntity = UsuarioVO.class, fetch = FetchType.EAGER)
    @JoinColumn(name = "ce_usuario")
    private UsuarioVO usuarioVO ;

    public Integer getIdContas() {
        return idContas;
    }

    public void setIdContas(Integer idContas) {
        this.idContas = idContas;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public CategoriaVO getCategoriaVO() {
        return categoriaVO;
    }

    public void setCategoriaVO(CategoriaVO categoriaVO) {
        this.categoriaVO = categoriaVO;
    }

    public UsuarioVO getUsuarioVO() {
        return usuarioVO;
    }

    public void setUsuarioVO(UsuarioVO usuarioVO) {
        this.usuarioVO = usuarioVO;
    }

 
}
[size=18]Classe Pagar[/size]
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Model;

import java.io.Serializable;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

/**
 *
 * @author Joao Garbiere
 */
@Entity
@Table(name = "pagar")
public class PagarVO implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "idPagar")
    private Integer idPagar;
    @Column(name = "valorPagar")
    private float valorPagar;
    @Column(name = "descricaoDespesa", nullable = false, length = 50)
    private String descricaoDespesa;
    @Column(name = "dataPagar", nullable = false, length = 10)
    private String dataPagar;
    @ManyToOne(cascade = CascadeType.ALL, targetEntity = MetodoPagamentoVO.class, fetch = FetchType.EAGER)
    @JoinColumn(name = "ce_metodopagamento")
    private MetodoPagamentoVO MetodoPagamentoVO ;
    @ManyToOne(cascade = CascadeType.ALL, targetEntity = UsuarioVO.class, fetch = FetchType.EAGER)
    @JoinColumn(name = "ce_contas")
    private ContasVO contasVO ;

    public Integer getIdPagar() {
        return idPagar;
    }

    public void setIdPagar(Integer idPagar) {
        this.idPagar = idPagar;
    }

    public float getValorPagar() {
        return valorPagar;
    }

    public void setValorPagar(float valorPagar) {
        this.valorPagar = valorPagar;
    }

    public String getDescricaoDespesa() {
        return descricaoDespesa;
    }

    public void setDescricaoDespesa(String descricaoDespesa) {
        this.descricaoDespesa = descricaoDespesa;
    }

    public String getDataPagar() {
        return dataPagar;
    }

    public void setDataPagar(String dataPagar) {
        this.dataPagar = dataPagar;
    }

    public Model.MetodoPagamentoVO getMetodoPagamentoVO() {
        return MetodoPagamentoVO;
    }

    public void setMetodoPagamentoVO(Model.MetodoPagamentoVO MetodoPagamentoVO) {
        this.MetodoPagamentoVO = MetodoPagamentoVO;
    }

    public ContasVO getContasVO() {
        return contasVO;
    }

    public void setContasVO(ContasVO contasVO) {
        this.contasVO = contasVO;
    }
  
}

Ola, segue os dados que pediu, gostaria que me explicasse melhor como seria por objeto.
O prazo de entrega esta apertado, eh um trabalho que estamos realizando na faculdade e caso
verifique que esta bagunçado o codigo, adianto que realmente esta rsrs, estamos correndo contra o tempo,
mas a experiencia estah sendo valida tendo em vista que ainda nao havia aprendido a linguagem java.
Conto com sua ajuda para sair desse empasse abraços

Criado 30 de maio de 2013
Ultima resposta 31 de mai. de 2013
Respostas 2
Participantes 2