Eai galera, blz?
To tentando inserir alguns dados utilizando hibernate mas estou com alguns problemas que já rodei a net e não consegui funcionar…
vamos:
Tenho o seguinte Cenário:
1 Pedido que possui muitos items de pedidos…
criei entao as seguintes entidades:
Pedido:
@Entity
public class Pedido {
@Id
@GeneratedValue
private Long id;
private String nomeCliente;
@OneToMany(mappedBy="pedido")
private List<ItemPedido> itemPedidos;
... getters and setters..
ItemPedido:
@Entity
public class ItemPedido {
@Id
@GeneratedValue
private Long id;
private String nome;
@ManyToOne
@JoinColumn(name="pedido_fk")
private Pedido pedido;
... getters and setters ...
Esse é o codigo das entidades…e para testar utilizei os seguintes comandos:
... main ...
ItemPedido i1 = new ItemPedido();
i1.setNome("Carne");
ItemPedido i2 = new ItemPedido();
i2.setNome("Miojo");
ItemPedido i3 = new ItemPedido();
i3.setNome("Refrigerante");
Pedido pedido = new Pedido();
pedido.setNomeCliente("Extrax SuperMercados");
pedido.setItemPedidos(Arrays.asList(i1, i2, i3));
dao.adicionar(pedido);
Usei como base a propria doc do hibernate para annotations, já que testei alguns exemplos que achei ate aqui mesmo no forum e nao tive resultado…
Na documentacao diz que é nescessario apenas colocar a anotação @OneToMany e a condição mappedBy que iria funcionar…utilizando esse esquema o código apenas insere o nome do Cliente na tabela pedido.
Então inseri o condição CascadeType.ALL na classe Pedido e ele insere os dados do pedido e dos Items de Pedido, porem quando eu olho no banco a coluna pedido_fk fica nula, pq??!??!
Uma forma alternativa que eu vi, era um exemplo que no setItemPedidos era feito um for e para cada ItemPedido.pedido era dado a referencia dele mesmo…
ex:
public void setItemPedidos(List<ItemPedido> itemPedidos) {
this.itemPedidos = itemPedidos;
for(ItemPedido itemPedido : itemPedidos){
itemPedido.setPedido(this);
}
}
Nesse exemplo consegui assimilar o pedido_fk ao id do produto…
Mas ao utilizar isso no ambiente web, no meu caso utilizando o struts2 temos o mesmo problema novamente…
ou seja, o metodo alternativo falha…
Se alguem já utilizou esse tipo de mapeamento no Hibernate utilizando ANNOTATIONS e puder me ajudar ficarei grato…
Obrigado,