gpt4 book ai didi

mongodb - KMongo 支持枚举吗?

转载 作者:行者123 更新时间:2023-12-03 15:59:36 28 4
gpt4 key购买 nike

我有一个 mongo 集合,其中有一个名为 role 的字符串字段。特别是此字段将始终填充以下三个选项之一:useradminguest

这就是我决定创建枚举的原因,这样开发人员可以更轻松地使用它,同时将字符串值保留在数据库中。

我尝试从我的集合中检索文档,希望 KMongo 能够从字符串解析为枚举 Role,反之亦然。

遗憾的是,KMongo 似乎无法做到这一点。

data class User(var role: Role,  // 0 user, 1 admin, 2 guest
var email: String,
var password: String)

enum class Role{
user,
admin,
guest
}

当我尝试通过 _id 查找文档时,我收到以下消息:

2019-05-21 11:39:01 [http-nio-8080-exec-1] ERROR c.p.p.c.SpringWebConfig$simpleMappingExceptionResolver$resolver$1 - Excepción general resolviendo una petición com.fasterxml.jackson.module.kotlin.MissingKotlinParameterException: Instantiation of [simple type, class com.foo.user.User] value failed for JSON property role due to missing (therefore NULL) value for creator parameter role which is a non-nullable type at [Source: de.undercouch.bson4jackson.io.LittleEndianInputStream@3195529c; pos: 275] (through reference chain: com.foo.user.User["Role"])

所以我的问题是:KMongo 是否支持这些术语中的枚举?

最佳答案

所以我终于找到了解决我的问题的方法。使用Jackson Annotations库我可以按照我需要的方式序列化和反序列化我的枚举。就我而言,我选择将它们用作字符串,以便 KMongo 知道如何使用它们。

@JsonFormat(shape = JsonFormat.Shape.STRING)
enum class Role {
user,
admin,
guest
}

现在我可以将我的属性声明为枚举类型,以便 KMongo 知道如何处理它们。

关于mongodb - KMongo 支持枚举吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56236559/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com