親(Solicitud)がカスケードとして定義されている子エンティティ(SolicitudArxiu)は削除できません。JPAとのOneToMany関係の子エンティティを削除できません
親(カスケード)エンティティ内の関係の定義は、カスケードを削除すると削除が機能するため、子からの削除に影響するようです。
子供(SolicitudArxiu)を強制的に削除するフォームはありますか?
SolicitudArxiuManager(削除する子実体)
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(親エンティティ)
@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;
...
これは私がやろうとしていることですが、t_solicitudとt_arxiuの関係を削除しようとしていますが、em.removeを実行した後もエンティティはそこに残ります。 ¿? – Joe
エンティティを削除するときにjpa 2.0以上を使用している場合、orphanRemovalをtrueに定義しないかぎり、子が残ります。そのため、エンティティとの関係を削除するかorphanRemovalをtrueに定義するかのどちらかで、 –
@Joe私はちょうどorphanRemovalが設定されていることに気がつきましたが、関係を削除すると子を取り除くのに十分です –