ugu*_*kan 5 java hibernate jpa soft-delete
我有一个抽象的基类A,这是一个@MappedSuperClass.此外,有几个实体类从类扩展A.类A包含一个名为的属性STATUS,表示是否删除记录.
@MappedSuperclass
public abstract class A {
@Id
private Long id;
@Column(nullable = false)
private boolean status = true;
}
Run Code Online (Sandbox Code Playgroud)
我想要的是能够从A带有@SQLDelete注释的类中的所有子类上执行软删除.例如,我有一个类B extends A,每当我在类上调用delete时B,我希望它更新数据库上该记录的状态.
@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;
}
Run Code Online (Sandbox Code Playgroud)
现在我能够软删除,但为了这个我必须@SQLDelete在每个类中编写注释.我不希望重复,并希望在基类中编写A一次.在那里它将更新该记录的状态.
这可能吗?如果是的话,我该如何实现呢?
提前致谢.
小智 1
如果必须使用@SQLDelete那么恐怕没有解决方案。
我已经成功地使用 spring-data-jpa + hibernate 和映射的超类实现了软删除机制,而不使用 @SQLDelete,但它需要创建您自己的 BaseRepository 实现来覆盖 SimpleJpaRepositoryImpl,然后用您的 softdelete 替换删除方法执行。
spring-data 文档中详细描述了执行此操作的方法,此处。
| 归档时间: |
|
| 查看次数: |
632 次 |
| 最近记录: |