Kodlin内联类,用于@Id注释的属性

问题描述 投票:1回答:1

在我的业务逻辑中,我必须处理很多实体ID,它们的所有类型均为String,这可能引起混乱,尤其是当您将它们作为方法参数传递时。因此,我考虑使用inline classes引入一点类型安全性。我知道,内联类在v1.3中仍被标记为实验性的。不过,有没有人尝试过在数据库映射上下文中使用inline class作为@ Id属性,在我的例子中是带有Spring Data的MongoDB。

@Entity
class User {
   @Id
   var id: UserId
}

with

inline class UserId(val id: String)

我猜没有对基础属性进行拆箱,因此_id将最终成为数据库中的一个对象?那么Spring的CrudRepository接口呢?它似乎可以编译,但最终会起作用:

interface UserRepository : CrudRepository<User, UserId>

可能使用AttributeConverter将内联类转换为primitive可能会起作用。有任何经验吗?

mongodb kotlin spring-data-mongodb kotlin-inline-class
1个回答
0
投票

内联类会产生全新的类型,而不仅仅是类型化的Alias。即使我们的代码库知道MongoDB是什么新类型,对吗?因此,您不能将内联类直接存储到相应的原始类型中。

© www.soinside.com 2019 - 2024. All rights reserved.