Morphia 无法识别我的 @ID 注释字段
Morphia does not recognize my @ID annotated field
我有一个简单的 POSO GroupACLTemplate
,我想坚持下去。它是从摘要class 中提取的class。我用 @Entity
注释了它,还有一个 @Id
@Entity("aclTemplate")
@SerialVersionUID(1L)
class GroupACLTemplate(@(Id@field) id: String, groupRoleAccess: Set[GroupRoleAccess]) extends AclTemplate(id) with Serializable
当我部署 war 时,我没有看到 GroupACLTemplate
的任何集合。我也试过这个
class GroupACLTemplate(@Id id: String, groupRoleAccess: Set[GroupRoleAccess]) extends AclTemplate(id) with Serializable
我添加了一个测试用例并尝试像这样保存一个对象
@Inject
var aclTemplateRepository: AclTemplateRepository = _
aclTemplateRepository.save(aclTemplate.head)
错误显示
NoId complained about com.java.sample.acl.GroupACLTemplate. : No field is annotated with @Id; but it is required
我是不是漏掉了什么?
如果您在 github 中提交问题,我可以查看。 Morphia 使用 class 文件,所以一切都应该 "just work" 但我们目前没有针对 scala classes 进行测试,所以也许 scala 编译成字节码的方式有点奇怪,这会抛弃映射器。
在声明构造函数参数时,如果我们不使用任何修饰符,Scala 会将这些参数映射到 private final
变量。但是,如果添加 var
,它们将映射到 private
变量。这就是我所做的改变。现在 class 声明看起来像
@Entity("aclTemplate")
@SerialVersionUID(1L)
class GroupACLTemplate(@(Id@field) var id: String, groupRoleAccess: Set[GroupRoleAccess]) extends AclTemplate(id) with Serializable
你应该使用来自吗啡的 ID 而不是来自 spring 数据的 ID
我有一个简单的 POSO GroupACLTemplate
,我想坚持下去。它是从摘要class 中提取的class。我用 @Entity
注释了它,还有一个 @Id
@Entity("aclTemplate")
@SerialVersionUID(1L)
class GroupACLTemplate(@(Id@field) id: String, groupRoleAccess: Set[GroupRoleAccess]) extends AclTemplate(id) with Serializable
当我部署 war 时,我没有看到 GroupACLTemplate
的任何集合。我也试过这个
class GroupACLTemplate(@Id id: String, groupRoleAccess: Set[GroupRoleAccess]) extends AclTemplate(id) with Serializable
我添加了一个测试用例并尝试像这样保存一个对象
@Inject
var aclTemplateRepository: AclTemplateRepository = _
aclTemplateRepository.save(aclTemplate.head)
错误显示
NoId complained about com.java.sample.acl.GroupACLTemplate. : No field is annotated with @Id; but it is required
我是不是漏掉了什么?
如果您在 github 中提交问题,我可以查看。 Morphia 使用 class 文件,所以一切都应该 "just work" 但我们目前没有针对 scala classes 进行测试,所以也许 scala 编译成字节码的方式有点奇怪,这会抛弃映射器。
在声明构造函数参数时,如果我们不使用任何修饰符,Scala 会将这些参数映射到 private final
变量。但是,如果添加 var
,它们将映射到 private
变量。这就是我所做的改变。现在 class 声明看起来像
@Entity("aclTemplate")
@SerialVersionUID(1L)
class GroupACLTemplate(@(Id@field) var id: String, groupRoleAccess: Set[GroupRoleAccess]) extends AclTemplate(id) with Serializable
你应该使用来自吗啡的 ID 而不是来自 spring 数据的 ID