Kotlin KMongo 库嵌套查询不起作用
Kotlin KMongo library nested query not working
如果嵌套属性查询正在使用,这总是返回null,我不知道为什么,只是按照官网文档document link
database.getCollection<User>().findOne(User::auth / Auth::ssaid eq p.ssaid, User::auth / Auth::password eq p.password)
没有嵌套属性查询都可以。
database.getCollection<User>().findOne(User::lastlogin eq p.lastlogin)
型号class代码
data class Auth(val password: String, val ssaid: String, val localLastLogin: String)
data class User(
@BsonProperty(useDiscriminator = true) val auth: Auth,
val lastLogin: String = Instant.now().toString(),
val members: List<Member> = emptyList(),
val channels: List<Channel> = emptyList()
) : Data()
您需要使用@field:BsonProperty
如下:
data class User(
@field:BsonProperty(useDiscriminator = true) val auth: Auth,
val lastLogin: String = Instant.now().toString(),
val members: List<Member> = emptyList(),
val channels: List<Channel> = emptyList()
) : Data()
原因是从相应的 Kotlin 元素生成了多个 Java 元素,因此在生成的 Java 字节码中有多个可能的注释位置。因此,您需要明确说明。更多详情 here.
如果嵌套属性查询正在使用,这总是返回null,我不知道为什么,只是按照官网文档document link
database.getCollection<User>().findOne(User::auth / Auth::ssaid eq p.ssaid, User::auth / Auth::password eq p.password)
没有嵌套属性查询都可以。
database.getCollection<User>().findOne(User::lastlogin eq p.lastlogin)
型号class代码
data class Auth(val password: String, val ssaid: String, val localLastLogin: String)
data class User(
@BsonProperty(useDiscriminator = true) val auth: Auth,
val lastLogin: String = Instant.now().toString(),
val members: List<Member> = emptyList(),
val channels: List<Channel> = emptyList()
) : Data()
您需要使用@field:BsonProperty
如下:
data class User(
@field:BsonProperty(useDiscriminator = true) val auth: Auth,
val lastLogin: String = Instant.now().toString(),
val members: List<Member> = emptyList(),
val channels: List<Channel> = emptyList()
) : Data()
原因是从相应的 Kotlin 元素生成了多个 Java 元素,因此在生成的 Java 字节码中有多个可能的注释位置。因此,您需要明确说明。更多详情 here.