2016-07-07 73 views
0

我有一個簡單的POSO GroupACLTemplate我想堅持。它是從抽象類中分類的。我曾與@Entity註解,並也有GroupACLTemplate@IdMorphia無法識別我的@ID註釋字段

@Entity("aclTemplate") 
@SerialVersionUID(1L) 
class GroupACLTemplate(@([email protected]) id: String, groupRoleAccess: Set[GroupRoleAccess]) extends AclTemplate(id) with Serializable 

當我部署我的戰爭,我沒有看到任何集合。我也試過這個

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

在聲明構造函數參數時,如果我們不使用任何修飾符,Scala會將這些變量映射到private final變量。但是,如果添加var,它們將映射到private變量。這是我做的改變。現在類的聲明看起來像

@Entity("aclTemplate") 
@SerialVersionUID(1L) 
class GroupACLTemplate(@([email protected]) var id: String, groupRoleAccess: Set[GroupRoleAccess]) extends AclTemplate(id) with Serializable 
0

如果您在github中提出問題,我可以查看一下。 Morphia與類文件一起工作,所以一切都應該「正常工作」,但我們目前沒有針對scala類進行測試,所以可能對於scala如何編譯爲字節碼來拋棄映射器有點奇怪。

+0

[完成](https://github.com/mongodb/morphia/issues/960) – rockydgeekgod

+0

謝謝。我會盡快爲你找點東西。 – evanchooly

-1

,你應該從嗎啡使用的,而不是從春天的數據之一標識