使用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

回到顶部