JPA...Duvida ao fazer createQuery...com join

0 respostas
P

Olá,

umas duvidas pois estou acostumado a usar DAO ( fazendo sql) e estou convertendo um projeto
para JPA usando Hibernate.

Tenho no modelo o seguinte :

NotaFiscal (1-1) Cliente
NotaFiscal (1-N) NotaFiscalItem

Tenho uma tela de consulta onde de como parametro o estado e tenho que retornar
todas as notas fiscais , notas fiscais itens e clientes desse estado .

Estou tentando fazer join com createQuery (JPA) mas não vai ???

Alguém teria algum exemplo pra sanar essa minha duvida ???

Se alguem puder me ajudar agradeceria ???

-- to fazendo isso mas da erro 
-- e não sei se está certo 

select nota , item,cliente from notafiscal nota join nota.cliente as cliente join nota.notafiscalitem as item
where cliente.estado="SP"
public static void main(String[] args) {
		
		//org.apache.log4j.BasicConfigurator.configure();
		EntityManagerFactory emf = Persistence.createEntityManagerFactory("JPA9");
        EntityManager em = emf.createEntityManager();
		
		
		System.out.println("Inico ...testCreateQuery()");

		List listas = em.createQuery("select nota from NotaFiscal as nota where nota.id=3").getResultList();
					
		System.out.println("Size listas = "+listas.size());
        
        for (int i=0;i<listas.size();i++){
        	NotaFiscal  rs = (NotaFiscal) listas.get(i);
        	if (i==0){
            	System.out.println("Nota  ID  ="+rs.getId());
            	System.out.println("Nome  ="+rs.getDescricao());
	      	    System.out.println("___________________________________________");
        		
	    		System.out.println("   Cliente ID ="+rs.getCliente().getId());
	    		System.out.println("   Cliente Nome = "+rs.getCliente().getNome());
	    		System.out.println("   Cliente Estado = "+rs.getCliente().getEstado());
	      	    System.out.println("___________________________________________");

        	}         	
        	
        	
        	for (NotaFiscalItem it :rs.getItenss()){
        		System.out.println("   Item ID ="+it.getId());
        		System.out.println("   Seq Item = "+it.getSeqItem());
        		System.out.println("   Qtde Item = "+it.getQtdeItem());
        		System.out.println("   Valor Item = "+it.getValor());
        	}
        	System.out.println("___________________________________________");
        	
        }

	}
import java.util.ArrayList;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;



@Entity
@Table(name="Nota_Fiscal")
public class NotaFiscal {
	
	@Id
	@GeneratedValue
	@Column(name="ID_NOTA")
	private int id;
	@Column(name="descricao")
	private String descricao;
	@OneToMany(mappedBy= "notafiscal",cascade =javax.persistence.CascadeType.ALL)
	private List><NotaFiscalItem> itenss = new ArrayList<NotaFiscalItem>();

	@OneToOne
	@JoinColumn(name = "ID_CLIENTE")

	private Cliente cliente;
	public NotaFiscal(){
		
	}
	public int getId() {
		return id;
	}

	public void adicionaNotaFiscalItem(NotaFiscalItem item) {
		itenss.add(item);
	}
	public void setId(int id) {
		this.id = id;
	}


	
	
	public String getDescricao() {
		return descricao;
	}
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	public Cliente getCliente() {
		return cliente;
	}
	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}
	public List<NotaFiscalItem> getItenss() {
		return itenss;
	}
	public void setItenss(List<NotaFiscalItem> itenss) {
		this.itenss = itenss;
	}
import java.util.ArrayList;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;



@Entity
@Table(name="Nota_Fiscal")
public class NotaFiscal {
	
	@Id
	@GeneratedValue
	@Column(name="ID_NOTA")
	private int id;
	@Column(name="descricao")
	private String descricao;
	@OneToMany(mappedBy= "notafiscal",cascade =javax.persistence.CascadeType.ALL)
	private List<NotaFiscalItem> itenss = new ArrayList<NotaFiscalItem>();

	@OneToOne
	@JoinColumn(name = "ID_CLIENTE")

	private Cliente cliente;
	public NotaFiscal(){
		
	}
	public int getId() {
		return id;
	}

	public void adicionaNotaFiscalItem(NotaFiscalItem item) {
		itenss.add(item);
	}
	public void setId(int id) {
		this.id = id;
	}


	
	
	public String getDescricao() {
		return descricao;
	}
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	public Cliente getCliente() {
		return cliente;
	}
	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}
	public List<NotaFiscalItem> getItenss() {
		return itenss;
	}
	public void setItenss(List<NotaFiscalItem> itenss) {
		this.itenss = itenss;
	}
	
	
}
package br.com.exemplojpa.modelo;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table( name="Nota_Fiscal_Item")
public class NotaFiscalItem {
	
	
	@Id
	@GeneratedValue
	@Column(name="id_item")
    private int id;
	
	@Column
	private int seqItem;
	
	@Column
	private int qtdeItem;

    private double valor;
	
	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn (name = "FK_ID_NOTA")	
	private NotaFiscal notafiscal;

	public NotaFiscalItem(int xqtde){
		this.qtdeItem= xqtde;
	}
	
    public NotaFiscalItem( String nome){
		
	}
    
    public NotaFiscalItem(){
	
	}
	public int getId() {
		return id;
	}


	public void setId(int id) {
		this.id = id;
	}


	public int getSeqItem() {
		return seqItem;
	}


	public void setSeqItem(int seqItem) {
		this.seqItem = seqItem;
	}


	public int getQtdeItem() {
		return qtdeItem;
	}


	public void setQtdeItem(int qtdeItem) {
		this.qtdeItem = qtdeItem;
	}


	public NotaFiscal getNotafiscal() {
		return notafiscal;
	}


	public void setNotafiscal(NotaFiscal notafiscal) {
		this.notafiscal = notafiscal;
	}

	public double getValor() {
		return valor;
	}

	public void setValor(double valor) {
		this.valor = valor;
	}
	
	
}
Criado 19 de dezembro de 2008
Respostas 0
Participantes 1