2016-07-14 2 views
0

Mongo 컬렉션으로 추상 스칼라 클래스가 있습니다.morphia를 사용하여 mongo 컬렉션에서 필드를 찾을 수 없습니다.

@Entity("aclTemplate") 
abstract class AclTemplate(@([email protected]) var id: String) extends Serializable 

또 다른 클래스는 컬렉션에 GroupACLTemplate의 일부 문서가 있습니다 위의

@Entity("aclTemplate") 
class GroupACLTemplate(id: String, var groupRoleAccess: Set[GroupRoleAccess]) extends AclTemplate(id) with Serializable 

확장합니다. 나는이 내가 그것을 때문에 모르핀의 오랜 다형성 문제로 생각하지 않는 ValidationException

org.mongodb.morphia.query.ValidationException: The field 'groupRoleAccess.groupId' could not be found in 'com.model.acl.AclTemplate' 

을 던져 간단한 쿼리를

createQuery().disableValidation().field("groupRoleAccess.groupId").equal(groupId).asList(); 

을 시도하고있다. 왜냐하면 내가 단지 groupRoleAccess에 액세스하려 할 때 가능하기 때문입니다. 그러나, 그 세트 내에서 액세스 할 수 없습니다. 이것은 정상적인 Java 세트입니다. GroupRoleAccess 클래스

class GroupRoleAccess(var groupId: String, var roleId: String) extends Serializable 

내가 여기에 뭔가를 놓친가요?

답변

0

1.3.0-SNAPSHOT을 시도해야합니다. 방금 이와 비슷한 버그가 수정되었으며 문제가 해결되었을 수도 있습니다.

+0

없음을 추출 할 수 있었다 궁금해 – rockydgeekgod

0

나는 뭔가를 해킹 할 수있었습니다. 분명히 컬렉션이 추상 클래스이기 때문에 Mongo/Morphia는 서브 클래스에있는 속성을 찾지 않습니다. 그래서 createQuery을 사용하고 하위 클래스의 클래스를 전달했습니다.

ds.createQuery(clazz).disableValidation().field("groupRoleAccess.groupId").equal(groupId).asList(); 

는하지만 여전히 작동하지 않았다 groupRoleAccess 전에

관련 문제