Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb @Id注释属性的Kotlin内联类_Mongodb_Kotlin_Spring Data Mongodb_Kotlin Inline Class - Fatal编程技术网

Mongodb @Id注释属性的Kotlin内联类

Mongodb @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中的一个对象结束?那

在我的业务逻辑中,我必须处理很多实体ID,它们都是String类型的,这可能会导致混淆,特别是当您将其中一些作为方法参数传递时。所以我考虑在内联类中引入一点类型安全性。我知道,在v1.3中,内联类仍然被标记为实验类。然而,有没有人尝试过在DB映射上下文中使用内联类作为@Id属性,在我的例子中是一个带有Spring数据的MongoDB

@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>