Oi pessoal!!!
Estou com problemas e duvidas na hora de inseir um dado quando tenho um relacionamento de 1 para muitos, onde campo para esse relacionamento recebe o valor de uma Sequence em uma tabela e na outra faz parte de uma chave composta.
Eu tenho um relacionamento entre duas tabelas de Um- para muitos.
1 PEDIDOS -> N ITENSPEDIDO
Basicamente minhas tabelas são assim:
PEDIDO
- pedidoID (PK) - Sequence: pedido_seq
nome
ITENSPEDIDO
*pedidoID(PK)
- itempedidoID(PK)
Descricao
Os Mapeamentos ficaram assim:
Pedidos->
[code]
@Entity
@Table(name = “pedidos”)
public class Pedidos implements Serializable {
@Id
@SequenceGenerator(name="pedido_seq", allocationSize=1)
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="pedido_seq")
@Column(name = "pedido_id", nullable = false)
private int pedidoID;
...
@OneToMany(cascade = CascadeType.ALL, mappedBy = "pedidos")
private List<ItensPedido> itensPedidoCollection;[/code]
ItensPedido ->
[code]
@Entity
@Table(name = “itens_pedido”)
public class ItensPedido implements Serializable {
@EmbeddedId
protected ItensPedidoPK itensPedidoPK;
...
@JoinColumn(name = "pedido_id", referencedColumnName = "pedido_id", insertable = false, updatable = false)
@ManyToOne
private Pedidos pedidos;[/code]
PK (resolução da Chave composta) ->
[code]@Embeddable
public class ItensPedidoPK implements Serializable {
@Id
@Column(name = "pedido_id", nullable = false)
private int pedidoID;
@Id
@Column(name = "item_pedido", nullable = false)
private int itemPedidoID;[/code]
Como PEDIDOS tem uma lista de ITENSPEDIDO, se eu der um Persiste(objetopedido) e esse Objeto estiver com a lista de ItensPedido preenchida, os dados não deveria ser inseridos nas 2 tabelas???
Só que não esta dando certo!!!
Diz que o campo pedidoID da Tabela ItensPedido esta com o valor = 0.
Mas como eu vou setar isso se eu não sei qual valor vai ser dado ao pedidoID ja que ele vem de uma sequence e enquanto estou preenchendo os objetos nada foi inserido ainda???
O JPA ja não deveria entender isso sozinho, ja que eu disse que o relacionamento é feito por esse campo??? Ou entende e eu é que fiz algo errado ou estou esquecendo de alguma configuração ou declaração???
HELP!!!
Obrigada!!!