OneToMany

6 respostas
G

Pessoal
Estou tentanto fazer um relacionamento e está dando erro.

public class VendaProduto {

. . .

@OneToMany (cascade = CascadeType.ALL, targetEntity = ItemVendaProduto.class, fetch=FetchType.LAZY)

@JoinColumn( name=id_venda_produto)

private Set itemProduto;

. . .

}

Lembrando que não posso usar mappedBy, pois o atributo do outro lado não está mapeado. Sei que da certo, mas esta dando erro.

está dando este erro:

INFO: javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: br.com.ibasi.profit.business.entity.ItemVendaProdutobr.com.ibasi.profit.business.BusinessException: javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: br.com.ibasi.profit.business.entity.ItemVendaProduto

Alguém poderia me dar uma luz?

Obrigado!

6 Respostas

B

Como você está fazendo para persistir sua classe VendaProduto ?

B

Poste o código…

G

Obrigado por responder Breno.

Estou postando uma parecida, pois Venda ta toda comentada.
Esta é CondicionalProduto com ItemCondicionalProduto.

@Entity

@Table(name=condicionais_produto)

public class CondicionalProduto implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)       
   @javax.persistence.Column(name = "id")
private Integer id = 0;	

@Temporal(TemporalType.DATE)
@javax.persistence.Column(name = "data")
private Calendar data;

@JoinColumn(name="id_cliente" , referencedColumnName = "id")
@ManyToOne
private Cliente cliente;

@JoinColumn(name="id_vendedor" , referencedColumnName = "id")
@ManyToOne
private Vendedor vendedor;

@javax.persistence.Column(name = "total_condicional")
private double totalCondicional;

@JoinColumn(name="id_empresa" , referencedColumnName = "id")
@ManyToOne
private Empresa empresa;

@OneToMany (cascade = CascadeType.ALL, targetEntity = ItemCondicionalProduto.class, fetch=FetchType.EAGER)
@JoinColumn( name="id_condicional_produto")	
private Set<ItemCondicionalProduto> itemProduto;


@javax.persistence.Column(name = "observacao")
private String observacao;

@javax.persistence.Column(name = "devolvido")
private boolean devolvido;

    . . . .

}

@Entity

@Table(name = itens_condicionais_produto)

public class ItemCondicionalProduto implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@javax.persistence.Column(name = "id")
private Integer id;

@JoinColumn(name = "id_produto", referencedColumnName = "id")
@ManyToOne
private Produto produto;

@javax.persistence.Column(name = "quantidade")
private double quantidade;
@javax.persistence.Column(name = "valor")
private double valor;
@javax.persistence.Column(name = "desconto")
private double desconto;

     .  .  .  .

}

B

Esta me parecendo um erro de persistência de uma entidade que não está mais gerenciavél…
Tenta fazer um teste sem o cascade, fazendo primeiro a persistencia da entidade ItemVendaProduto e depois a persistência de VendaProduto …

B

Outra coisa...Para postar seus códigos utilize a tag [code] para ficar mais fácil de visualizar...

G

mas eu fazendo de itemVendaProduto antes, vai me pedir o valor id_venda_produto.

Criado 13 de janeiro de 2010
Ultima resposta 13 de jan. de 2010
Respostas 6
Participantes 2