kurt_steiner
11/27/2024, 12:44 PMdata class User(
@BsonId
val id: ObjectId,
val name: String,
val age: Int
) {
override fun toString(): String {
return "User(id=${id}, name=${name}, age=${age})"
}
}
and this is revalent code
class UserService(val database: MongoDatabase) {
val users = database.getCollection("users", User::class.java)
fun insertOne(name: String, age: Int): User {
val user = User(
id = ObjectId(),
name = name,
age = age
)
users.insertOne(user)
return user
}
}
and the error is
Can't find a codec for CodecCacheKey{clazz=class com.steiner.model.User, types=null}.
org.bson.codecs.configuration.CodecConfigurationException: Can't find a codec for CodecCacheKey{clazz=class com.steiner.model.User, types=null}.
so can you tell me how to insert a custom class into collection ?Marcus Ilgner
11/27/2024, 12:53 PMkurt_steiner
11/27/2024, 12:54 PMkurt_steiner
11/27/2024, 1:33 PMMarcus Ilgner
11/27/2024, 1:37 PMCodec
. There might even be an existing one in https://github.com/ltj/bson4kkurt_steiner
11/27/2024, 1:40 PMMarcus Ilgner
11/27/2024, 1:43 PMMonolightCodec
in the examples which encodes a class. Personally I've never used any of these libraries so I can't say more than that 😉kurt_steiner
11/27/2024, 1:46 PMMarcus Ilgner
11/27/2024, 1:52 PMtrue
, 1.23
or "foobar"
are all valid JSON values, even if they don't make up a full JSON object.kurt_steiner
11/27/2024, 1:52 PMwriteName
is okMarcus Ilgner
11/27/2024, 1:52 PMdata class
kurt_steiner
11/27/2024, 2:00 PMMarcus Ilgner
11/27/2024, 2:01 PMMarcus Ilgner
11/27/2024, 2:02 PMval newRegistry = CodecRegistries.fromRegistries(
CodecRegistries.fromCodecs(MyEnumCodec()),
MongoClientSettings.getDefaultCodecRegistry()
)
kurt_steiner
11/27/2024, 2:05 PMfindMany
fun findMany(name: String? = null, age: Int? = null): List<User> {
val queryParams = mutableListOf<Bson>()
if (name != null) {
queryParams.add(Filters.eq(User::name.name, name))
}
if (age != null) {
queryParams.add(Filters.eq(User::age.name, age))
}
return users.find(Filters.and(queryParams)).toList()
}
kurt_steiner
11/27/2024, 2:06 PMMarcus Ilgner
11/27/2024, 2:08 PMkurt_steiner
11/27/2024, 2:08 PMkurt_steiner
11/27/2024, 2:22 PMMongoClientSettings.getDefaultCodecRegistry()
kurt_steiner
11/27/2024, 2:27 PMkurt_steiner
11/27/2024, 2:31 PM