我有一个抽象的Scala类作为Mongo集合。
@Entity("aclTemplate")
abstract class AclTemplate(@(Id@field) var id: String) extends Serializable
另一个类扩展了上面的
@Entity("aclTemplate")
class GroupACLTemplate(id: String, var groupRoleAccess: Set[GroupRoleAccess]) extends AclTemplate(id) with Serializable
集合中有一些GroupACLTemplate
的文档。我正在尝试一个简单的查询
createQuery().disableValidation().field("groupRoleAccess.groupId").equal(groupId).asList();
这会抛出ValidationException
org.mongodb.morphia.query.ValidationException: The field 'groupRoleAccess.groupId' could not be found in 'com.model.acl.AclTemplate'
我认为这不是因为吗啡中长期存在的多态性问题。因为当我尝试仅访问groupRoleAccess
时,它就可以了。但是,它无法访问该组内部。这是一个普通的Java集。这是GroupRoleAccess
类
class GroupRoleAccess(var groupId: String, var roleId: String) extends Serializable
我在这里错过了什么吗?
答案 0 :(得分:1)
我设法破解了一些东西。显然,由于集合是一个抽象类,Mongo / Morphia不会查找其子类中存在的属性。所以我使用了createQuery
并传递了子类的类。
ds.createQuery(clazz).disableValidation().field("groupRoleAccess.groupId").equal(groupId).asList();
但我仍然想知道它是如何在
之前提取groupRoleAccess
的
答案 1 :(得分:0)
您应该尝试1.3.0-SNAPSHOT
。我刚修复了类似于此的错误,它也可能解决了你的问题。