Bom dia Cleiton!
Cara, devo estar fazendo alguma coisa errada.
Veja só o código exatamente como estou tentando.
@Entity
public class Venda implements Serializable {
@Id
@Column(name = "VENDA_ID", nullable = false)
@GeneratedValue
private Integer vendaId;
@Column(name = "TOTAL_VENDA", nullable = false)
private BigDecimal totalVenda;
@OneToMany(cascade = CascadeType.ALL , mappedBy = "venda" )
private List<ItemVenda> itemVendaList;
...
}
@Entity
@Table(name = "item_venda")
@IdClass(ItemVendaPK.class)
public class ItemVenda implements Serializable {
@Id
@Column(name = "ITEM_ID", nullable = false)
private Integer itemId;
@Id
@Column(name = "VENDA_ID", nullable = false)
private Integer vendaId;
@Column(name = "PRODUTO_ID", nullable = false)
private int produtoId;
@Column(name = "QUANTIDADE", nullable = false)
private BigDecimal quantidade;
@Column(name = "PRECO", nullable = false)
private BigDecimal preco;
@Column(name = "PRECO_TOTAL", nullable = false)
private BigDecimal precoTotal;
@JoinColumn(name = "VENDA_ID", referencedColumnName = "VENDA_ID", nullable = false)
@ManyToOne
private Venda venda;
...
}
/*Removi o @Embeddable daqui*/
public class ItemVendaPK implements Serializable {
@Column(name = "ITEM_ID", nullable = false)
private Integer itemId;
@Column(name = "VENDA_ID", nullable = false)
private Integer vendaId;
...
}
public class Main {
public static void main(String[] args) {
try {
Venda v = new Venda();
v.setTotalVenda(BigDecimal.valueOf(45));
ItemVenda i1 = new ItemVenda();
i1.setItemId(0);
i1.setProdutoId(13);
i1.setPreco(BigDecimal.valueOf(14));
i1.setQuantidade(BigDecimal.valueOf(5));
i1.setPrecoTotal(BigDecimal.valueOf(450));
ItemVenda i2 = new ItemVenda();
i2.setItemId(1);
i2.setProdutoId(130);
i2.setPreco(BigDecimal.valueOf(104));
i2.setQuantidade(BigDecimal.valueOf(50));
i2.setPrecoTotal(BigDecimal.valueOf(40));
i1.setVenda(v);
i2.setVenda(v);
ArrayList a = new ArrayList();
a.add(i1);
a.add(i2);
v.setItemVendaList(a);
JPAUtil.persist(v);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
e aqui a mensagem:
Hibernate: insert into venda (TOTAL_VENDA) values (?)
Hibernate: insert into item_venda (PRECO, PRECO_TOTAL, PRODUTO_ID, QUANTIDADE, ITEM_ID, VENDA_ID) values (?, ?, ?, ?, ?, ?)
27/10/2007 12:05:48 org.hibernate.type.NullableType nullSafeSet
INFO: could not bind value ‘null’ to parameter: 7; Parameter index out of range (7 > number of parameters, which is 6).
…
…
org.hibernate.exception.GenericJDBCException: could not insert: [appTeste.ItemVenda]
…
…
Caused by: java.sql.SQLException: Parameter index out of range (7 > number of parameters, which is 6).