Mongodb @Id注释属性的Kotlin内联类
在我的业务逻辑中,我必须处理很多实体ID,它们都是String类型的,这可能会导致混淆,特别是当您将其中一些作为方法参数传递时。所以我考虑在内联类中引入一点类型安全性。我知道,在v1.3中,内联类仍然被标记为实验类。然而,有没有人尝试过在DB映射上下文中使用内联类作为@Id属性,在我的例子中是一个带有Spring数据的MongoDBMongodb @Id注释属性的Kotlin内联类,mongodb,kotlin,spring-data-mongodb,kotlin-inline-class,Mongodb,Kotlin,Spring Data Mongodb,Kotlin Inline Class,在我的业务逻辑中,我必须处理很多实体ID,它们都是String类型的,这可能会导致混淆,特别是当您将其中一些作为方法参数传递时。所以我考虑在内联类中引入一点类型安全性。我知道,在v1.3中,内联类仍然被标记为实验类。然而,有没有人尝试过在DB映射上下文中使用内联类作为@Id属性,在我的例子中是一个带有Spring数据的MongoDB @Entity class User { @Id var id: UserId } 与 我猜底层属性没有拆箱,所以_id将作为DB中的一个对象结束?那
@Entity
class User {
@Id
var id: UserId
}
与
我猜底层属性没有拆箱,所以_id将作为DB中的一个对象结束?那么Spring的粗糙存储接口呢?它似乎是可编译的,但最终会起作用吗:
interface UserRepository : CrudRepository<User, UserId>
interface UserRepository:CrudRepository
可能使用
AttributeConverter
将内联类转换为原语就可以完成这项工作。有没有这样的经验?内联类会产生全新的类型,而不仅仅是类型化别名。即使我们的代码库知道这种新类型是什么,MongoDB也不对吗?因此,您无法将内联类直接存储到相应的基元类型字段中。Spring Data Commons有一个未解决的问题:到目前为止没有进展。当我试图将一个内联类存储到MongoDB时,结果是:java.lang.ArrayIndexOutOfBoundsException:3位于org.springframework.data.mapping.model.PreferredConstructorDiscoverer$Discoverers.buildPreferredConstructor(PreferredConstructorDiscoverer.java:221)~[spring-data-commons-2.2.3.RELEASE.jar:2.2.3.RELEASE]注册CustomConversion从UserId到String,反之亦然,到目前为止没有任何帮助:-/将类型从UserId更改为String,一切正常。
interface UserRepository : CrudRepository<User, UserId>