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 ???
{code]
– 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”
[/code]
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;
}
}
---