Mat*_*att 7 domain-driven-design mongodb kotlin spring-data-mongodb kotlin-inline-class
在我的业务逻辑中,我必须处理大量实体 ID,它们全部都是String类型,这可能会导致混乱,尤其是当您将其中几个作为方法参数传递时。所以我考虑通过内联类引入一点类型安全性。我知道,内联类在 v1.3 中仍然被标记为实验性的。尽管如此,有没有人尝试过在数据库映射上下文中使用内联类作为@Id属性,在我的例子中是带有 Spring Data 的 MongoDB。
@Entity
class User {
@Id
var id: UserId
}
Run Code Online (Sandbox Code Playgroud)
和
inline class UserId(val id: String)
Run Code Online (Sandbox Code Playgroud)
我猜底层属性没有拆箱,所以 _id 最终会作为数据库中的对象?Spring 的 CrudRepository 接口又如何呢?它似乎可以编译,但最终会起作用:
interface UserRepository : CrudRepository<User, UserId>
Run Code Online (Sandbox Code Playgroud)
可能使用AttributeConverter将内联类转换为原语可以完成这项工作。有这方面的经验吗?