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



对于spring-data-jpa-datatables:4.3,如何使DataTablesRepository返回所有实体,而忽略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 {...}

这是一个相应的存储库,扩展了春季数据jpa数据表的DataTablesRepository:

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

这是不可能的。始终应用@Where谓词。您可以在不使用@Where的情况下将同一个表再次映射到不同的实体类,并根据需要进行查询,或者创建一个筛选器(@Filter(而不是使用@Where,只需确保筛选器始终处于活动状态,除非您明确不希望应用筛选器谓词。另请参阅:https://docs.jboss.org/hibernate/orm/5.5/userguide/html_single/Hibernate_User_Guide.html#pc-过滤

您可以编写如下本机查询。

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

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

最新更新