Dúvida simples: persistir um para muitos

Pessoal,

Estou iniciando meus estudos sobre JPA e minha dúvida é simples: Tenho as classes Cliente[1] - [*]Pedido, como faço para persistir no banco de dados? Tentei conforme abaixo porém só persistiu o Cliente.


List<Pedido> pedidos = new ArrayList<Pedido>();
Pedido pedido = new Pedido();
pedido.setDescricaoPedido("testePedido");

Cliente _cliente = new Cliente();
_cliente.setNome(nome);
_cliente.setPedidos(pedidos);
    	
em.persist(_cliente);

As classes:

Cliente:

@Entity
@Table(name="cliente")
public class Cliente implements Serializable{
	
	private static final long serialVersionUID = 1L;
	
	private int id;
	private String nome;
	private List<Pedido> pedidos;
	
	@Id
	@Column(name = "id_cliente")
	@GeneratedValue(strategy = GenerationType.AUTO)
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}
	
	public String getNome() {
		return nome;
	}
	
	public void setNome(String nome) {
		this.nome = nome;
	}
	
	@OneToMany(cascade=CascadeType.ALL)
	@JoinColumn(name="cliente_id")
	public List<Pedido> getPedidos() {
		return pedidos;
	}

	public void setPedidos(List<Pedido> pedidos) {
		this.pedidos = pedidos;
	}
	

}

Pedido:

@Entity
public class Pedido implements Serializable{
	
	private static final long serialVersionUID = 1L;
	
	private int id;
	private String descricaoPedido;
	
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	
	public String getDescricaoPedido() {
		return descricaoPedido;
	}
	public void setDescricaoPedido(String descricaoPedido) {
		this.descricaoPedido = descricaoPedido;
	}

}

Então voce não anotou assim desse jeito ele nunca vai persisitir os pedidos, voce tem que persistir os pedidos igual voce fez com o cliente.
Voce precisa relacionar o pedido com o cliente.
Depois de persistir o cliente voce faz:

pedido.setCliente(_cliente);
em.persist(pedido);

Ou voce pode usar cascade mas ai vai depender do seu negocio.
Quando for inserir um cliente tem que inserir os seus pedidos?

Quando for inserir um cliente tem que inserir os seus pedidos?
Sim, por isso usei o Cascade.ALL.

Não era para ele persistir automaticamente quando eu persistisse o Cliente?

O seu array de pedidos está vazio…axo q vc tem q adicionar algo nele:

pedidos.add(pedido);

num lembre se é assim…

Abstraí no código… está com valores sim

Mesmo assim, no contexto preciso apenas de:
1- Criar um cliente
2- Criar um pedido e associar ao cliente;

Para eu associar um pedido ao cliente preciso necessariamente passar uma lista de pedidos???

Nesse post aqui eu mostro como funciona o relacionamento @OneToMany.

@OneToMany e @ManyToOne Unidirecional e Bidirecional.

Se na sua ponta você tem uma lista, você tem que sempre adicionar um objeto de lista e depois seu objeto.

Ou seja.

cliente.setPedidos(new ArrayList());
e depois
cliente.getPedidos().add(new Pedido());

E se for um relacionamento bidirecional você terá que fazer
pedido.setCliente(cliente);

Mesmo com o CascadeType.ALL