我在尝试使用JPA @NamedQuery从备用表执行DELETE时遇到了一些麻烦。
我想创建一个 @Schedule任务来为 MyEntityDB 中的某些孤儿数据安排删除作业。
我将 NOT EXISTS 与MyEntityDB中的数据与OTHER_TABLE中的其他数据进行比较,然后删除MyEntityDB中的数据,而不存在于OTHER_TABLE 中。
为此,我创建了一个 MyEntityRepository 接口来创建删除方法。
有了这个,我想运行预定的任务。
我应该如何处理这个解决方案?
MyEntity.java
@NamedQueries({
@NamedQuery(
name = "deleteOrphans",
query = "DELETE FROM MyEntity " +
"WHERE NOT EXISTS (" +
"SELECT NULL FROM OTHER_TABLE ot " +
"WHERE ot.ID = :myEntityId)"
)
})
MyEntityRepository.java
void deleteOrphans();
答案 0 :(得分:0)
JPA可以在父母被删除后立即删除您的孤儿
在父级实体上,您必须设置orphanRemoval
@OneToMany(mappedBy="parent", orphanRemoval="true")
public List<Orphan> orphans;
这样你就不需要预定的任务,清理&#34;你的数据库