Ola o meu problema é que eu tenho uma classe Objeto chamada OrdemDeServico dentro dela eu tenho uma lista de Itens e dentro de cada Item eu tenho uma lista de Operações eu não conheço muito de JPA e Hibernate eu consegui inserir a lista de Itens mas a de operações eu não consigo. e não faço ideia de como fazer eu acredito que o segredo está no mapeamento mas não sei segue alguns trechos do codigo.
@Entity
public class Item {
@Id
@GeneratedValue
protected Long id;
@NotNull
@Min(value = 1, message = "O Item deve ser maior que 0")
@Max(value = 99999, message = "O Item deve ser menor que 99999")
// @Pattern(regexp = "{0,9}")
protected int numero;
@NotNull
protected String descrição;
@NotNull
protected String observacoes;
@NotNull
@Min(value = 1, message = "A quantidade deve ser maior que 0")
@Max(value = 99999, message = "A quantidade deve ser menor que 99999")
protected int quantidade;
@NotNull
protected String tipoDeItem;
@OneToMany
protected List<Operacao> operacoes;
@Entity
public class OrdemDeServico {
@Id
@GeneratedValue
private Long id;
private int numeroOS;
private String cliente;
private boolean ordemAtiva;
@OneToMany
private List<Item> itens;
public void adicionaNaLista(Item item) {
// INICIOU O METODO
this.itens.add(item);
// TERMINOU O METODO
}
package br.com.flej.repositorio;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import br.com.flej.modelo.Cliente;
import br.com.flej.modelo.Item;
import br.com.flej.modelo.OrdemDeServico;
public class OrdemDeServicoRepositorio {
private EntityManager manager;
public OrdemDeServicoRepositorio(EntityManager manager) {
this.manager = manager;
}
public void adicionaOrdem(OrdemDeServico ordemDeServico) {
this.manager.persist(ordemDeServico);
}
public OrdemDeServico busca(int numero) {
Query query = this.manager.createQuery("select x from OrdemDeServico x WHERE x.numeroOS = :numero");
query.setParameter("numero", numero);
OrdemDeServico ordemDeServico = (OrdemDeServico) query.getSingleResult();
return ordemDeServico;
}
public List<Item> buscaItens(int numeroItem) {
Query query = this.manager.createQuery("select x from OrdemDeServico x WHERE x.numeroOS = :numero AND ");
query.setParameter("numero", numeroItem);
return (List<Item>) query.getResultList().get(1);
}
public OrdemDeServico buscaID(Long id) {
Query query = this.manager.createQuery("select x from OrdemDeServico x WHERE x.id = :id");
query.setParameter("id", id);
OrdemDeServico ordemDeServico = (OrdemDeServico) query.getSingleResult();
return ordemDeServico;
}
public List<OrdemDeServico> buscaTodosAtivos() {
boolean estado = true;
Query query = this.manager.createQuery("select x from OrdemDeServico x WHERE x.ordemAtiva = :estado");
query.setParameter("estado", estado);
return query.getResultList();
}
public List<OrdemDeServico> buscaTodos() {
boolean estado = true;
Query query = this.manager.createQuery("select x from OrdemDeServico x");
return query.getResultList();
}
public void update(OrdemDeServico ordemDeServico) {
this.manager.merge(ordemDeServico);
}
public OrdemDeServico buscaUltima() {
Query query = this.manager.createQuery("select max(x.numeroOS) from OrdemDeServico x");
OrdemDeServico ordemDeServico = (OrdemDeServico) query.getSingleResult();
return ordemDeServico;
}
public void remove(OrdemDeServico ordemDeServico) {
OrdemDeServico ordemDeServicoRetorno = this.manager.merge(ordemDeServico);
this.manager.remove(ordemDeServicoRetorno);
}
}
package br.com.flej.repositorio;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import br.com.flej.modelo.Cliente;
import br.com.flej.modelo.Item;
import br.com.flej.modelo.OrdemDeServico;
public class ItemRepositorio {
private EntityManager manager;
public ItemRepositorio(EntityManager manager) {
this.manager = manager;
}
public void adicionaItem(Item item) {
this.manager.persist(item);
}
public Item busca(int numero) {
Query query = this.manager.createQuery("select x from Item x WHERE x.numero = :numero");
query.setParameter("numero", numero);
Item item = (Item) query.getSingleResult();
return item;
}
public List<Item> buscaTodos() {
Query query = this.manager.createQuery("select x from Item x");
return query.getResultList();
}
public void update(Item item) {
this.manager.merge(item);
}
public void remove(Item item) {
Item itemRetorno = this.manager.merge(item);
this.manager.remove(itemRetorno);
}
}
como eu faço para inserir as operações do Item? eu tenho que implementar mais alguma coisa no mapeamento da classe Item e OrdemDeServico?