Olá galera, estou começando agora com JPA e gostaria que voces me dessem uma forcinha com a consulta que estou tentando fazer...
É o seguinte, eu tenho uma classe que distribui minhas EntityManager, e possuo 3 classes das quais eu gostaria de fazer a consulta.
Eu ainda nao tenho certeza se o mapeamento das 3 classes está correto. Sào elas: Fornecedor, PedidoCompra e ItemCompra.
Oque eu gostaria de fazer é o seguinte: Passar um fornecedor X p/ o método, e o mesmo me retorna a uma lista de pedidos cujo o fornecedor seja o passado como parametro.
package com.perfaco.modelo;
import java.io.Serializable;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
@Entity
public class Fornecedor implements Serializable {
@Id @GeneratedValue
private Long id;
private String nome;
private String endereco;
private String telefone;
@OneToMany(targetEntity=PedidoCompra.class, fetch=FetchType.LAZY,cascade=CascadeType.ALL)
private List<PedidoCompra> pedidos;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
public String getTelefone() {
return telefone;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
/* public List<Produto> getProdutos() {
return produtos;
}
public void setProdutos(List<Produto> produtos) {
this.produtos = produtos;
}*/
public List<PedidoCompra> getPedidos() {
return pedidos;
}
public void setPedidos(List<PedidoCompra> pedidos) {
this.pedidos = pedidos;
}
}
package com.perfaco.modelo;
import java.io.Serializable;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
@Entity
public class ItemCompra implements Serializable {
@Id
@GeneratedValue
private Long id;
@ManyToOne(fetch=FetchType.EAGER, targetEntity=PedidoCompra.class)
private PedidoCompra pedido;
@ManyToOne(fetch=FetchType.EAGER)
private Produto produto;
private Integer quantidade;
private Double valorUnitario;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public PedidoCompra getPedido() {
return pedido;
}
public void setPedido(PedidoCompra pedido) {
this.pedido = pedido;
}
public Produto getProduto() {
return produto;
}
public void setProduto(Produto produto) {
this.produto = produto;
}
public Integer getQuantidade() {
return quantidade;
}
public void setQuantidade(Integer quantidade) {
this.quantidade = quantidade;
}
public Double getValorUnitario() {
return valorUnitario;
}
public void setValorUnitario(Double valorUnitario) {
this.valorUnitario = valorUnitario;
}
}
package com.perfaco.modelo;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
@Entity
public class PedidoCompra implements Serializable {
@Id @GeneratedValue
private Long id;
private Date dataCompra;
@OneToOne(fetch=FetchType.LAZY)
private Fornecedor fornecedor;
@OneToMany(targetEntity=ItemCompra.class, cascade=CascadeType.ALL, fetch=FetchType.EAGER, mappedBy="pedido")
private List<ItemCompra> itens;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Date getDataCompra() {
return dataCompra;
}
public void setDataCompra(Date dataCompra) {
this.dataCompra = dataCompra;
}
public Fornecedor getFornecedor() {
return fornecedor;
}
public void setFornecedor(Fornecedor fornecedor) {
this.fornecedor = fornecedor;
}
public List<ItemCompra> getItens() {
return itens;
}
public void setItens(List<ItemCompra> itens) {
this.itens = itens;
}
}
Obrigado a todos!!