我是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解决方案。
怎么能实现这个目标?我错过了什么吗?
答案 0 :(得分:1)
我还没有及时了解spring-data-mongo的变化,但是如果你只是将你的id更改为String类型?而不是ObjectId 和你的字符串值碰巧是"字符串" ObjectId的十六进制代码表示,当保存到数据库时,spring数据会自动将其转换为ObjectId,并在将ObjectId读取回Bean时将其自动转换为String。
基本上,spring-data-mongo为你带来了魔力。我怀疑他们从1.x天改变了这种行为,但我可能错了。