Java 玩集合(即集合或列表)字段内的Morphia查询

Java 玩集合(即集合或列表)字段内的Morphia查询,java,collections,playframework,morphia,Java,Collections,Playframework,Morphia,我的文档的父文档ID具有一组长值,如下所示: {..., "parentIDs" : [ 47, 49 ], ...} 在我的实体类中,此字段定义为: @Embedded(concreteClass = java.util.TreeSet.class) @Indexed public Set<Long> parentIDs = new TreeSet<Long>(); @Embedded(concreteClass=java.util.TreeSet.class) @

我的文档的父文档ID具有一组长值,如下所示:

{..., "parentIDs" : [ 47, 49 ], ...}
在我的实体类中,此字段定义为:

@Embedded(concreteClass = java.util.TreeSet.class)
@Indexed
public Set<Long> parentIDs = new TreeSet<Long>();
@Embedded(concreteClass=java.util.TreeSet.class)
@索引
公共集parentId=新树集();
Morphia查询将返回具有特定父ID的所有文档(例如47)

我正在使用:

List<Node> nl = Node.find("type", "event").filter("parentIDs", id).asList();
List nl=Node.find(“type”,“event”).filter(“parentId”,id).asList();
id为正确且现有的父文档id。 但它不起作用。我错过了什么


谢谢eriq

我不太熟悉find表达式,也不使用Play!但我认为我解决这个问题的方法也适用于你。使用methods字段()和hasThisOne()代替filter

可能是这样的:

Node.find("type","event").field("parentIDs").hasThisOne(id).asList();
希望这有帮助

问候
阿恩

谢谢你的帮助!问题源于代码中的另一点。我发现了.filter(“parentId”,id).asList();顺便说一句,您的查询可以简化为:List nl=Node.find(“parentid,type”,id,“event”).asList();