Hibernate problema com o OneToMany

8 respostas
Mordor

Tenho uma classe pedido que faz um mapeamento OneToMany

@Entity
@Table(name = "pedido")
public class Pedido implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @Basic(optional = false)
    @Column(name = "id", nullable = false)
    private Integer id;
...
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "pedido", fetch = FetchType.LAZY)
    private List<Produto> produtoCollection;
....
O problema é o seguinte:

1- Pego o pedido pelo ID;

2- Pego os produtos via produtoCollection;

3- Altero um produto;

Agora se eu for pegar o pedido novamente o atributo produtoCollection fica null;

So volta a listar os produtos se eu reiniciar a aplicação, alguem ja passou por isso?

8 Respostas

Lavieri

não use referencia direta ao atributo… use

getProdutoCollection() …

veja o pq aqui… veja como o hibernate se comporta

http://www.guj.com.br/posts/list/15/121904.java

le os meus posts que estão ai … e olha os prints

hfernandes

Tente usar FetchType.EAGER ao em vez de FetchType.LAZY

R

Bom dia,
tente inicializar a lista:

private List<Produto> produtoCollection = new ArrayList<Produto>();
Mordor

Coloquei como EAGER e não funcionou e tentei deixar inicializado, mesmo assim zerou a lista.
Não achei ainda o motivo disso acontecer.

Lavieri

mostre o trecho onde vc altera o produto

Mordor

Aqui vai o código.

Pedido p = em.find(Pedido.class, id); //Pego o pedido pelo ID
List&lt;Produto&gt; pl = p.getProdutoCollection(); //Pega todos os produtos do pedido
Produto produto = pl.get(1); //Pego um produto
em.merge(produto); //Gravo o produto
Pedido p = em.find(Pedido.class, id); //Pego de novo o pedido pelo ID
List&lt;Produto&gt; pl = p.getProdutoCollection(); //Pego de novo todos os produtos do pedido mas agora a lista vem sem nenhum item
Lavieri

aparentemente não tem erro ai, apesar que esse trecho ai não compila, portanto não pode ser o trecho que vc usou…

cola o código de Produto tb… e me fala c vc configurou alguma EntityListerns ou algum @PreUpdate ou PostUpdate…

e se possivel cola uma situação real, pra debugar é melhor ver a real

juniorsatanas

Como ficou o JSP ?

Criado 26 de março de 2009
Ultima resposta 2 de mar. de 2010
Respostas 8
Participantes 5