Java 玩集合(即集合或列表)字段内的Morphia查询
我的文档的父文档ID具有一组长值,如下所示: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) @
{..., "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();