我想要坚持一个简单的POSO GroupACLTemplate
。它是一个抽象类的子类。我已使用@Entity
对其进行了注释,并且还有@Id
@Entity("aclTemplate")
@SerialVersionUID(1L)
class GroupACLTemplate(@(Id@field) id: String, groupRoleAccess: Set[GroupRoleAccess]) extends AclTemplate(id) with Serializable
当我部署战争时,我没有看到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
我在这里错过了什么吗?
答案 0 :(得分:0)
如果您在github中提出问题,我可以看看。 Morphia使用类文件,所以一切都应该"只是工作"但是我们目前还没有针对scala类进行测试,所以对于scala如何编译为丢弃映射器的字节码,可能会有些奇怪。
答案 1 :(得分:0)
在声明构造函数参数时,如果我们不使用任何修饰符,Scala会将这些参数映射到private final
变量。但是,如果添加var
,则会将它们映射到private
个变量。这就是我所做的改变。现在类声明看起来像
@Entity("aclTemplate")
@SerialVersionUID(1L)
class GroupACLTemplate(@(Id@field) var id: String, groupRoleAccess: Set[GroupRoleAccess]) extends AclTemplate(id) with Serializable
答案 2 :(得分:-1)
你应该使用来自morphia的Id而不是spring数据中的Id