默认情况下,如何在实体上“过滤”查询(where 子句)?

use*_*325 4 hibernate jpa playframework

我的游戏中有一个休眠实体!由 mysql 数据库和使用 JPA 查询的项目。

我现在想要做的是向我的应用程序添加一个“存档”工具,就用户而言删除该实体。

然而,仍有其他实体将引用它,因此我无法删除该实体,而且我希望能够从存档中恢复它。

但是,我不希望它默认出现在列表或搜索中,但当然在某些情况下仍然需要能够访问那里的数据,例如当用户检查引用它的项目时。

有许多引用实体的查询,我可以为每个查询添加一个 WHERE 子句,但我也使用了一些内置的查询方法,例如 findAll()。

我认为如果我能以某种方式默认添加 where 子句会更清晰。

有没有办法做到这一点?

小智 5

您在这里有两种解决方案:

  1. 如果您使用的是 Hibernate,您可以@Where(clause = "column to filer")在实体 bean 上使用。

    @Entity @Where(clause = "isActive='false'") public class Product { //... @Column private Boolean isActive; }

  2. 或者,如果使用 EclipseLink JPA 实现,则@AdditionalCriteria("column to filer")用于定义数据的参数化视图。

    @Entity @AdditionalCriteria("isActive='false'") public class Product { //... @Column private Boolean isActive; }

欲了解更多信息: