我正在使用 Spring data mongo 并希望对各种查询使用排序规则。排序规则需要与默认存储库方法以及自定义查询一起使用。
以下应该有效:
@Collation(value = "...")
data class SampleDocument(
@field:MongoId
var id: String? = null,
val value: String
)
interface RepositoryWithCollationInQuery: CrudRepository<SampleDocument, String> {
@Collation(value = "...")
@Query(
value = "{}",
sort = """{ "value": 1}""",
)
fun findAllCollationInAnnotation(): List<SampleDocument>
}
但是不评估排序规则。仅当直接将其添加到
@Query
时才会对其进行评估。
版本:
可以在此处找到包含预期代码(和失败的测试)的示例项目:https://github.com/dirkbolte/mongodb_collation_test
尝试了以下方法:
@Collation
添加到数据类(失败)@Collation
添加到存储库界面(失败)@Collation
(失败)collation=...
注释上指定 @Query
(有效)我希望将
@Collation
注释添加到存储库和/或文档中将允许所有存储库方法都使用它,特别是在使用 findAll(pageable)
时。当所有内容都需要 @Query
时,我必须手动且显式地指定每个查询。
回答我自己:问题在 Spring Data Mongo 中被接受为 bug