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
Deixe um comentário