Kotlin getter覆盖+ 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解决方案。

怎么能做到这一点? 我错过了什么吗?

我没有跟上最新的,并且更新了spring-data-mongo的变化,但是如果你只是简单地把你的id改为String类型的话。 而不是ObjectId 你的字符串值恰好是ObjectId的“字符串”十六进制代码表示,当保存到数据库时,spring数据会自动将其转换为ObjectId,并在读取ObjectId时将其自动转换为字符串到豆子。

基本上这个spring-data-mongo对你来说是神奇的。 我怀疑他们从1.x天改变了这种行为,但我可能是错的。