Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Inserindo pedido sem nenhum item na lista

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?

1 resposta
solução!

Oi Edson!

Isso seria uma validação a ser realizada no projeto, provavelmente numa classe Service. Como no curso não tem uma aplicação, não fica tão claro como fazer essa validação.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software