Home Articles

Kotlin getter覆盖MongoDB

Asked
Viewed 1408 times
0

我是Kotlin开发的新手,我无法弄清楚如何处理这个问题 . 我有以下Kotlin数据类映射到MongoDB集合(Spring Data MongoDB):

@Document(collection = "orders")
data class OrderEntity
@PersistenceConstructor
constructor(@Id val id: ObjectId? = null, val place: String, var date: Date,
            val closed: Boolean = false, val price: Int = 0)

我想覆盖默认的id getter并返回一个字符串而不是ObjectId . 似乎“id”字段名称无法更改,因为我收到消息“不允许自定义id属性的字段名称!将不会考虑自定义名称!”所以我不能使用始终建议的_id解决方案 .

怎么能实现这个目标?我错过了什么吗?

1 Answer

  • 1

    我没有跟上最新的并且更改spring-data-mongo更改但是如果你只是将你的id更改为String类型?而不是ObjectId and 你的字符串值碰巧是ObjectId的"string"十六进制代码表示,当保存到数据库时,spring数据会自动将其转换为ObjectId,并在将ObjectId读取回String时将其自动转换为String . beans .

    基本上spring-data-mongo为你带来了魔力 . 我怀疑他们从1.x天改变了这种行为,但我可能错了 .

Related