Kotlin getter覆盖+ MongoDB

时间:2017-05-01 02:52:00

标签: mongodb kotlin spring-data-mongodb

我是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 个答案:

答案 0 :(得分:1)

我还没有及时了解spring-data-mongo的变化,但是如果你只是将你的id更改为String类型?而不是ObjectId 你的字符串值碰巧是"字符串" ObjectId的十六进制代码表示,当保存到数据库时,spring数据会自动将其转换为ObjectId,并在将ObjectId读取回Bean时将其自动转换为String。

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