[英]Soft delete with @MappedSuperClass in Hibernate
我有一個抽象基類A
,它是一個@MappedSuperClass
。 同樣,有幾個實體類從A
類擴展。 類A
包含一個名為STATUS
的屬性,它表示是否刪除一條記錄。
@MappedSuperclass
public abstract class A {
@Id
private Long id;
@Column(nullable = false)
private boolean status = true;
}
我想要的是能夠使用@SQLDelete
批注對類A
所有子類執行軟刪除。 例如,我有一個B extends A
類B extends A
並且每當我對B
類調用delete時,我都希望它更新數據庫上該記錄的狀態。
@Entity
@Table(name = "TempTable")
@SQLDelete(sql = "update TempTable set STATUS = 0 where ID = ?") //Basically, I don't want
//to write this in every
//class. Instead write
//it to class A once.
@Where(clause = "STATUS = 1")
public class B extends A {
private String alpha;
}
現在,我可以進行軟刪除,但是為此,我必須在每個類中編寫@SQLDelete
批注。 我不想重復,只想在基類A
編寫一次。 在那里它將更新該記錄的狀態。
這可能嗎? 如果是,我該如何實現?
提前致謝。
如果必須使用@SQLDelete,那么恐怕沒有解決方案。
我已經設法在不使用@SQLDelete的情況下使用spring-data-jpa + hibernate和映射的超類實現了軟刪除機制,但是它需要創建自己的BaseRepository實現以覆蓋SimpleJpaRepositoryImpl,然后用您的softdelete替換delete方法實施。
spring-data文檔( 此處)中對此進行了很好的描述。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.