Handling of nullable ObjectId / Bson Value types fails if the type is the first in the data class and optional.
@Serializable data class PaintOrder( @SerialName("_id") // Use instead of @BsonId @Contextual val id: ObjectId?, val color: String, val qty: Int, @SerialName("brand") val manufacturer: String = "Acme", // Use instead of @BsonProperty ) val paintOrder = PaintOrder(ObjectId(), "red", 5, "Acme") val collection = database.getCollection<PaintOrder>("orders") val insertOneResult = collection.insertOne(paintOrder) println(insertOneResult) // returns with expected results (e.g. "AcknowledgedInsertOneResult{insertedId=BsonObjectId{value=648b20978b3dfb1f994a2164}}") val results = collection.find().firstOrNull() assertEquals(results, paintOrder)
The following code is failing to hydrate the ObjectId even though its been decoded.