java - 如何在Hibernate中对关联映射表执行软删除?

标签 java hibernate many-to-many soft-delete

因此,尽管我个人讨厌软删除,但我工作的项目中每个表都只能软删除。我不确定如何处理关联表上的软删除,其字段如下所示:

@ManyToMany(targetEntity = AdvertisementVendor.class, fetch = FetchType.EAGER)
@JoinTable(name = "advertisement_version_advertisement_vendor_association",
        joinColumns = @JoinColumn(name = "advertisement_version_id"),
        inverseJoinColumns = @JoinColumn(name = "advertisement_vendor_id"))
private Set<AdvertisementVendor> _advertisement_vendors = new HashSet<>();

我已经了解了如何做 soft deletes ,但我不确定如何将其应用到关联表。

更新:

采纳 Dragan Bozanovic 的建议,我将专栏更新为:

    @ManyToMany(targetEntity = AdvertisementVendor.class, fetch = FetchType.EAGER)
@JoinTable(name = "advertisement_version_advertisement_vendor_association",
        joinColumns = @JoinColumn(name = "advertisement_version_id"),
        inverseJoinColumns = @JoinColumn(name = "advertisement_vendor_id"))
@WhereJoinTable(clause = "is_deleted = 0")
@SQLDelete(sql = "UPDATE advertisement_version_advertisement_vendor_association SET is_deleted = 1 WHERE advertisement_version_id = ? AND advertisement_vendor_id = ?", check = ResultCheckStyle.COUNT)
@SQLInsert(sql = "INSERT INTO advertisement_version_advertisement_vendor_association " +
        "(advertisement_version_id, advertisement_vendor_id, is_deleted) VALUES(?, ?, 0) " +
        "ON DUPLICATE KEY UPDATE is_deleted = 0")
private Set<AdvertisementVendor> _advertisement_vendors = new HashSet<>();

但这似乎不起作用。它似乎忽略了@SQLDelete并只是删除了映射。

更新2:

忽略第一次更新,它与不同的代码有关。上面的示例按原样运行。

最佳答案

您可以使用@WhereJoinTable用于过滤连接表上的条件:

Where clause to add to the collection join table. The clause is written in SQL. Just as with Where, a common use case is for implementing soft-deletes.

关于java - 如何在Hibernate中对关联映射表执行软删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42789219/

相关文章:

java - Spring 用户事务与 hibernate

entity-framework-4.1 - 是否可以使用 Entity Framework 直接引用多对多表,代码优先

java - Java中从ArrayList中删除对象

java - 嵌套异常是 org.hibernate.exception.JDBCConnectionException : Unable to acquire JDBC Connection

java - 重构 Java EE WebApp 何时有用?

java - 如何解决这个异常: "X references an unknown entity: Y"?

ember.js - 与 Ember、ember-data 和 Rails 的多对多关系

uml - UML类模型如何建立多对多关系

java - 异步任务 : pass two or more values from doInBackground to onPostExecute

java - 如何解决这个 Caused by : java. lang.NoSuchMethodError : twitter4j. Twitter.getId()I?