在我的业务逻辑中,我必须处理很多实体ID,它们的所有类型均为 String ,这会引起混乱,尤其是当您将它们作为方法参数传递时。因此,我考虑过在内联类中引入一点类型的安全性。我知道,内联类在v1.3中仍被标记为实验性的。但是,有没有人尝试过在数据库映射上下文中使用 inline class 作为 @Id 属性,在我的例子中是带有Spring Data的MongoDB。
setPriority(QueryJobConfiguration.Priority.BATCH)
使用
@Entity
class User {
@Id
var id: UserId
}
我猜没有对基础属性进行拆箱,因此_id最终将成为数据库中的对象吗?那么Spring的CrudRepository接口呢?似乎可以编译,但最终会起作用:
inline class UserId(val id: String)
可能使用interface UserRepository : CrudRepository<User, UserId>
将内联类转换为 primitive 可能会起作用。有任何经验吗?
答案 0 :(得分:0)
内联类会产生全新的类型,而不仅仅是类型化的Alias。即使我们的代码库知道MongoDB是什么新类型,对吗?因此,您不能将内联类直接存储到相应的原始类型Fields
答案 1 :(得分:0)
Spring Data Commons 有一个未解决的票证:https://github.com/spring-projects/spring-data-commons/issues/1947