将 KProperty 与对象列表一起使用

问题描述 投票:0回答:0

我们在 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")
kotlin reflection spring-data spring-data-mongodb
© www.soinside.com 2019 - 2024. All rights reserved.