Java 子表的Hibernate软删除

Java 子表的Hibernate软删除,java,hibernate,one-to-many,soft-delete,Java,Hibernate,One To Many,Soft Delete,假设我们有两个实体Customer和AppUser,它们是一对多关系 客户实体: @Entity @Table(name = "CUSTOMER") //Override the default Hibernation delete and set the deleted flag rather than deleting the record from the db. @SQLDelete(sql="UPDATE customer SET deleted = '1' WHERE id = ?"

假设我们有两个实体Customer和AppUser,它们是一对多关系

客户实体:

@Entity
@Table(name = "CUSTOMER")
//Override the default Hibernation delete and set the deleted flag rather than deleting the record from the db.
@SQLDelete(sql="UPDATE customer SET deleted = '1' WHERE id = ?")
//Filter added to retrieve only records that have not been soft deleted.
@Where(clause="deleted <> '1'")
public class Customer implements java.io.Serializable {
    private long id;
    private Billing billing;
    private String name;
    private String address;
    private String zipCode;
    private String city;
    private String state;
    private String notes;
    private char enabled;
    private char deleted;
    private Set appUsers = new HashSet(0);

    //Constructors...

    //Getters and Setters...

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "customer")
    //Filter added to retrieve only records that have not been soft deleted.
    @Where(clause="deleted <> '1'")
    public Set getAppUsers() {
    return this.appUsers;
    }
    public void setAppUsers(Set appUsers) {
    this.appUsers = appUsers;
    }
}
@Entity
@Table(name = "APP_USER")
//Override the default Hibernation delete and set the deleted flag rather than deleting the record from the db.
@SQLDelete(sql="UPDATE app_user SET deleted = '1' WHERE id = ?")
//Filter added to retrieve only records that have not been soft deleted.
@Where(clause="deleted <> '1'")
public class AppUser implements java.io.Serializable {
    private long id;
    private Customer customer;
    private AppRole appRole;
    private char enabled;
    private String username;
    private String appPassword;
    private Date expirationDate;
    private String firstName;
    private String lastName;
    private String email;
    private String phone;
    private String fax;
    private char deleted;
    private Set
    persons = new HashSet(0);

    //Constructors...

    //Getters and Setters...
}

现在,已删除的appUser已从数据库中硬删除,并保留三条记录。我还是想用软删除来处理这种情况,有人可以帮忙吗?

最后,我找到了答案,添加@SQLDelete来收集客户类

@SQLDelete(sql="UPDATE customer SET deleted = '1' WHERE id = ?")
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "customer")
//Filter added to retrieve only records that have not been soft deleted.
@Where(clause="deleted <> '1'")
    public Set getAppUsers() {
    return this.appUsers;
}
@SQLDelete(sql=“UPDATE customer SET deleted='1'其中id=?”)
@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY,mappedBy=“客户”)
//添加筛选器以仅检索尚未软删除的记录。
@其中(子句=“已删除的“1”)
公共集getAppUsers(){
返回此.appUsers;
}
休眠文档链接:

谢谢!你是个救生员。
appUsers.remove(oneItem)

saveCustomer(customer);
@SQLDelete(sql="UPDATE customer SET deleted = '1' WHERE id = ?")
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "customer")
//Filter added to retrieve only records that have not been soft deleted.
@Where(clause="deleted <> '1'")
    public Set getAppUsers() {
    return this.appUsers;
}