Problema com @OneToMany

beleza galera?
tenho uma entidade venda,e nessa entidade quero cadastrar uma lista de produtos(baterias),quando tento salvar tá gerando a seguinte exceção

Segue a minha classe Venda:

@Entity public class Venda { @Id@GeneratedValue private int idVenda; @Temporal(TemporalType.DATE) private java.util.Date Data; @Column(name="ValorUnitario") private float valorVenda; private String AmperagemSucata; @Column(name="IdCliente") private String idCliente; @OneToMany(cascade=CascadeType.PERSIST) private List<Bateria> listaBaterias; // getters s setters

e a parte do código que salva o objeto Venda no banco:

List<Bateria> listaBaterias = new ArrayList(); listaBaterias.add(b1); listaBaterias.add(b2); vendaBean.setListaBaterias(listaBaterias); new VendaDAO().insere(vendaBean);

Criei uma tabela no banco chamada [/b]venda_bateria[b] e ela possui as FKS, idVenda e idBateria.
O que está errado?o relacionamento é mesmo OneToMany?Tenho que mapear alguma coisa na classe Bateria?
qq vcs acham?
vlw ae pela atenção!

Fala garoto,

Primeiro, é mais comum vc mapear algo como

public class Bateria {
    @ManyToOne
    private Venda venda;
}

Se quiser fazer o contrário, tem que usar o @OneToMany(mappedBy=“venda”) em Venda, mas não precisa pro seu caso.

Esta exception acontece pq vc está tentando salvar Vendas, mas ela tem referência para uma classe que não está salva no banco (as baterias). Se você salvar as Baterias primeiro, e depois as vendas, vai funcionar. Se vc setar o Cascade ao persistir também deve funcionar.

T+