Bom dia Professor Rodrigo, tudo bem?
Fiquei com uma dúvida em relação ao processo de inserção do pedido.
Digamos que eu insira um pedido, sem adicionar nenhum item na lista.
EntityManager em = JPAUtil.getEntityManager();
PedidoDao cDao = new PedidoDao(em);
ClienteDao pDao = new ClienteDao(em);
em.getTransaction().begin();
Cliente cliente = new Cliente("Cliente Teste", "123456");
dao.cadastrar(cliente);
Pedido pedido = new Pedido(cliente));
dao.cadastrar(pedido);
em.getTransaction().commit();
em.close();
Como eu poderia evitar a persistência do pedido, com a lista de itens vazia, usando de boas práticas (sem validar a lista na classe PedidoDao)? Pensei em obrigar a passar um item pedido no construtor, porém como o hibernate nos obriga a criar um construtor padrão:
@Entity
@Table(name="pedidos")
public class Pedido {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name="valor_total")
private BigDecimal valorTotal;
private LocalDate data = LocalDate.now();
@ManyToOne
private Cliente cliente;
@OneToMany(mappedBy = "pedido", cascade = CascadeType.ALL)
private List<ItemPedido> itens = new ArrayList<ItemPedido>();
public Pedido() {
}
public Pedido(Cliente cliente) {
this.cliente = cliente;
}
Como eu poderia resolver esse problema de validação na classe pedido?