使用Spring JPA处理软删除
我有一个表Stuff定义为…
id, <fields>..., active
活动状态是软删除标志,并且始终为1或0。从长远来看,这可能会取代历史表格。
public interface StuffRepository extends JpaRepository<StuffEntity, Long> {}
在代码中,我们始终 使用活动记录。有什么方法可以让Spring始终active=1为该存储库生成的查询附加条件?或更理想的情况是允许我扩展用于生成查询的语法?
我知道可以@queues
在任何地方创建named ,但是随后我就失去了生成查询的便利。我还想避免使用“活动”方法污染接口。
如果重要的话,我正在使用Hibernate 4.2作为我的JPA实现。
回答:
这是一个古老的问题,你可能已经找到了答案。但是,对于所有寻求答案的Spring / JPA / Hibernate程序员来说-
假设你有实体狗:
@Entity public class Dog{
......(fields)....
@Column(name="is_active")
private Boolean active;
}
和一个存储库:
public interface DogRepository extends JpaRepository<Dog, Integer> {}
你需要做的就是在实体级别添加@Where批注,结果是:
@Entity@Where(clause="is_active=1")
public class Dog{
......(fields)....
@Column(name="is_active")
private Boolean active;
}
存储库执行的所有查询将自动过滤掉“非活动”行。
以上是 使用Spring JPA处理软删除 的全部内容, 来源链接: utcz.com/qa/434001.html