두 개의 엔티티 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;
}
}
APPUSER 엔티티 :
이@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를 삭제하는 방법을, 나는 예를 들어, 고객 엔티티 될 saveOrUpdate이다 :
Customer customer = getCustomerById(id);
Set<AppUser> appUsers = customer.getAppUsers();
, 우리는 네 appUsers이 지금 가정
appUsers.remove(oneItem)
saveCustomer(customer);
이제 삭제 된 appUser는 데이터베이스에서 하드 삭제되었으며 세 개의 레코드로 남았습니다. 난 여전히 그런 사건을 처리하기 위해 부드러운 삭제를 사용하려면, 누군가가 그것에 도울 수 있습니까?