【问题标题】:Delete orphans from alternative database using JPA @NamedQuery使用 JPA @NamedQuery 从备用数据库中删除孤儿
【发布时间】:2018-08-03 12:29:06
【问题描述】:

我在尝试使用 JPA @NamedQuery 从备用表执行 DELETE 时遇到了一些问题。

我想创建一个 @Schedule 任务 来为 MyEntityDB 中的一些孤立数据安排删除作业。

我将 MyEntityDB 中的数据与 OTHER_TABLE 中的其他数据进行比较 NOT EXISTS,然后删除 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();

【问题讨论】:

    标签: java spring hibernate jpa


    【解决方案1】:

    JPA 可以在删除父级后立即删除您的孤儿

    在父实体上你必须设置orphanRemoval

    @OneToMany(mappedBy="parent", orphanRemoval="true")
    public List<Orphan> orphans;
    

    这样您就不需要“清理”数据库的计划任务

    【讨论】:

      猜你喜欢
      • 2011-02-09
      • 2010-09-23
      • 2013-06-05
      • 2021-11-17
      • 1970-01-01
      • 2018-03-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多