在我的业务逻辑中,我必须处理很多实体 ID,它们都是String类型,这可能会导致混淆,尤其是当您将其中的几个作为方法参数传递时。所以我想通过内联类引入一点类型安全性。我知道,内联类在 v1.3 中仍然被标记为实验性的。然而,有没有人尝试过在数据库映射上下文中使用内联类作为@Id属性,在我的例子中是带有 Spring Data 的 MongoDB。
@Entity
class User {
@Id
var id: UserId
}
和
inline class UserId(val id: String)
我猜底层属性没有拆箱,所以 _id 最终会成为数据库中的一个对象?那么 Spring 的 CrudRepository 接口呢?它似乎是可编译的,但最终会起作用:
interface UserRepository : CrudRepository<User, UserId>
可能使用AttributeConverter
将内联类转换为原语可能会完成这项工作。有这方面的经验吗?