spring-data-jpa-datatables: 忽略 Hibernate @Where 注解

spring-data-jpa-datatables: Ignore Hibernate @Where annotation

对于 spring-data-jpa-datatables:4.3,如何使 DataTablesRepository 到 return 所有实体,忽略 Hibernate 的 @Where 注释?

这是一个带有 Hibernate @Where 注释的实体:

@Entity
@SQLDelete(sql = "UPDATE vehicle SET deleted_at = NOW() WHERE id = ?")
@Where(clause = "deleted_at IS NULL")
public class Vehicle extends AbstractEntity implements Serializable {...}

这是一个相应的存储库,扩展了 spring-data-jpa-datatables 的 DataTablesRepository:

@Repository
public interface VehicleDataTableRepository extends DataTablesRepository<Vehicle, Long> {
}

您可以像下面这样编写本机查询。

@Query(value="SELECT * FROM table Name", nativeQuery=true)
public ignoreWhereClauseQuery(){}

@Query 注释中的 SQL 必须指向 table 的名称和字段的名称(不是实体的名称)。

这不可能。始终应用 @Where 谓词。您可以将相同的 table 再次映射到不带 @Where 的不同实体 class 并在需要时查询它,或者创建过滤器 (@Filter) 而不是使用@Where 并确保过滤器始终处于活动状态,除非您明确不希望应用过滤器谓词。另见:https://docs.jboss.org/hibernate/orm/5.5/userguide/html_single/Hibernate_User_Guide.html#pc-filter