我不知道这是否仍然与你相关:至少在Spring Data JPA 1.9.4中,你可以指定两个查询。
给定一个存储库:
interface FoobarEntityRepository extends JpaRepository<FoobarEntity, Integer> {
Page findFoobarsSpecialQuery(String someParameter, final Pageable pageable);
}
您可以向实体添加 2 个本机查询,一个用于查询本身,一个用于 count 语句:
@Entity
@SqlResultSetMappings({
@SqlResultSetMapping(name = "SqlResultSetMapping.count", columns = @ColumnResult(name = "cnt"))
})
@NamedNativeQueries({
@NamedNativeQuery(
name = "FoobarEntity.findFoobarsSpecialQuery",
resultClass = DailyPictureEntity.class,
query = "Select * from foobars f where someValue = :someParameter "
),
@NamedNativeQuery(
name = "FoobarEntity.findFoobarsSpecialQuery.count",
resultSetMapping = "SqlResultSetMapping.count",
query = "Select count(*) as cnt from foobars f where someValue = :someParameter "
)
})
FoobarEntity {
}
诀窍是使用后缀指定计数查询。这也适用于弹簧数据注释。.count
@Query
请注意,您需要为计数查询提供 SQL 结果集映射。
这实际上很不错。