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
对于 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