我们在 Kotlin 中使用 Spring Data MongoDB。 Kotlin 附带了一些不错的类型安全标准扩展 (
org.springframework.data.mongodb.core.query.TypedCriteriaExtensions
)。
给定:
data class Foo(
val id: String,
val oneBar: Bar,
val bars: List<Bar>)
data class Bar(val thingy: String)
您可以使用它以类型安全的方式构建 Criteria,例如:
criterion = criterion + (Foo::id isEqualTo "id")
如果你有一个嵌套对象
Bar
,你可以使用
criterion = criterion + (Foo::oneBar / Bar::thingy isEqualTo "thingy")
当你有一个带有
KProperty
列表的对象 Foo
并且你想编写一个基于 Bar字段的条件时,你如何使用
Bar
我想做的是过滤Bar的一个属性。
这行不通,但我想做这样的事情:
criterion = criterion + (Foo::bars / <thing with list> / Bar::thingy isEqualTo "thingy")