Ich kann eine untergeordnete Entität (SolicitudArxiu) mit übergeordneter Komponente (Solicitud), die als Cascade definiert ist, nicht löschen, wie unten zu sehen ist.Untergeordnete Entität der OneToMany-Beziehung kann nicht mit JPA gelöscht werden
Es scheint, dass die Definition der Beziehung in der übergeordneten (Kaskade) Entität Auswirkungen auf die Löschung von Kind hat, weil wenn ich die Kaskade entfernen, dann funktioniert die Löschung.
Gibt es ein Formular, um die Löschung eines Kindes (SolicitudArxiu) zu erzwingen?
SolicitudArxiuManager (Kind Entität zu löschen)
public void delete(int id) {
try {
SolicitudArxiu reference = this.em.getReference(SolicitudArxiu.class, id);
this.em.remove(reference);
} catch (EntityNotFoundException e) {
//we want to remove it
logger.error("Entity not found exeption: ", e);
}
}
Solicitud (Muttergesellschaft)
@Entity
@Table(name = "t_solicitud")
public class Solicitud implements Serializable {
...
@OneToMany(mappedBy = "solicitud", cascade = CascadeType.ALL, orphanRemoval = true,
fetch = FetchType.EAGER)
private Collection<SolicitudArxiu> sarxius;
...
SolicitudArxiu.java
@Entity
@Table(name = "r_solicitudArxiu",
uniqueConstraints = @UniqueConstraint(columnNames = {"idSolicitud","idArxiu"}))
public class SolicitudArxiu implements Serializable {
...
@ManyToOne
@Basic(optional = false)
@JoinColumn(name = "idSolicitud", referencedColumnName = "id",
foreignKey = @ForeignKey(name = "solicitudArxiu2solicitud"))
private Solicitud solicitud;
@ManyToOne
@Basic(optional = false)
@JoinColumn(name = "idArxiu", referencedColumnName = "id",
foreignKey = @ForeignKey(name = "solicitudArxiu2arxiu"))
private Arxiu arxiu;
...
Es ist, was ich versuche zu tun, ich versuche, die Beziehung zwischen t_solicitud und t_arxiu zu löschen, aber nach execute em.remove bleibt die Entität dort. ¿? – Joe
Wenn Sie beim Entfernen der Entity jpa 2.0 oder höher verwenden, bleibt das Kind erhalten, es sei denn, Sie definieren das orphanRemoval als true. Entfernen Sie entweder die Relation und dann die Entity, oder definieren Sie das orphanRemoval als true, wenn die Relation entfernt wird wird entfernt –
@Joe Ich habe gerade bemerkt, dass Sie bereits die orphanRemoval gesetzt haben, dann Entfernung der Beziehung wird genug sein, um das Kind zu entfernen –