Deleção de relacionamento

3 respostas
davelino

Tenho essas duas entidades:
@Id
@GeneratedValue
private long id;

@Column(unique=true,nullable=false,length=150)

@NotNull

@Length(min=3, max=150)

@Label(value=Descrição)

private String description;
@Column(columnDefinition=text)

@Label(value=Observação)

private String observation;
@NotNull

@ManyToOne(optional=false)

@Label(value=Classificação da Patologia)

private PathologyClassification pathologyClassification;
@OneToMany(fetch = FetchType.EAGER,cascade = CascadeType.ALL)

@Label(value=Diagnosticos)

private Collection<Diagnosis> diagnosies;
@NotNull

@Label(value=Ativo)

private Boolean active;	

@Id

@GeneratedValue

private long id;
@Column(unique=true,nullable=false,length=150)

@NotNull

@Length(min=3, max=150)

@Label(value=Descrição)

private String description;
@Column(columnDefinition=text)

@Label(value=Observação)

private String observation;

O Problema e o seguinte eu persisto elas tranquilamente mas na hora de deletar somente a primeira pathology e deletada e o relacionamenteo mas a entidade no banco de diagnosies e mantida, entao somente some os dados de pathology e a referencia entre eles mantendo assim os dados da tabela de diagnosis

Metodo de deleção

public void delete(Pathology entity) throws Exception {

try {

this.manager.remove(this.manager.merge(entity));

} catch (Exception e) {

manager.getTransaction().rollback();

throw new Exception(Ocorreu um erro!);

}

}

3 Respostas

J

Na sua anotação @OneToMany(fetch = FetchType.EAGER,cascade = CascadeType.ALL)
Está faltando o orphanRemoval = true que indica que os filhos que não tiverem relacionamento sejam removidos.

davelino
ele da como propriedade indefinida

ele da como propriedade indefinida

J

Então, ve na documentação da versão que tu está usando.
No caso esse atributo é da JPA 2. Se tu estiver usando Hibernate, procure o equivalente que tem, agora JPA 1 acredito que não tenha, que é até uns dos furos da especificação 1.

Criado 16 de setembro de 2010
Ultima resposta 16 de set. de 2010
Respostas 3
Participantes 2