Hibernate 4 mapeamento OnToMany remoção de nodos filhos com erro de ORA-01407

21 12 2012

Como estava o mapeamento

Classe: COMPRA


@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
@JoinColumn(name="COMPRA_ID")
private List<Item> itens;

Classe: ITEM


@ManyToOne
@JoinColumn(name = "COMPRA_ID", nullable=false)
private Compra compra;

Qual o erro apresentado ao remover um item


org.springframework.orm.hibernate4.HibernateJdbcException: JDBC exception on Hibernate data access: SQLException for SQL [n/a]; SQL state [72000]; error code [1407]; ORA-01407: não é possível atualizar ("LDIAS"."ITEM"."COMPRA_ID") para NULL
nested exception is org.hibernate.QueryTimeoutException: ORA-01407: não é possível atualizar ("LDIAS"."ITEM"."COMPRA_ID") para NULL

 

Solução

Utilizar os parâmetros corretos para forçar a remoção dos itens “sem pai” e evitar de fazer um update nesse itens “sem pai” :O

São eles: orphanRemoval=true e updatable=false


@OneToMany(cascade=CascadeType.ALL, orphanRemoval=true, fetch=FetchType.EAGER)
@JoinColumn(name="COMPRA_ID", updatable=false)
private List<Item> itens;

 

 

FONTE: AQUI


Ações

Information

Deixe um comentário