0

我有这个实体,我需要在其中查询:

@Entity
public class Resource implements Serializable {   
    @Id    
    private Long id;
    private List<String> key;
}

这是查询:

List<String> keyPath = key.getFullPath();
Resource result = ofy().load().type(Resource.class).filter("key =", keyPath).first().get();

我收到此错误:

java.lang.IllegalArgumentException: A collection of values is not allowed.
    at com.google.appengine.api.datastore.DataTypeUtils.checkSupportedValue(DataTypeUtils.java:140)
    at com.google.appengine.api.datastore.Query$FilterPredicate.<init>(Query.java:867)

问题:

  • 是否可以使用 List 等集合作为查询值进行查询?
  • 是否可以使用 Objectify 查询或本机 Datastore 查询?
  • 如果没有,做这种查询的方法是什么

这个想法是查询获得与查询值Resource具有相同字符串列表(key字段)的实体。

4

2 回答 2

1

你试过IN运营商吗?

Resource result = ofy().load().type(Resource.class).filter("key IN ", keyPath).first().get();
于 2012-10-13T08:15:03.610 回答
0

这是使用具有列表的属性的单个值(使用 Objectify)从数据存储中检索信息的解决方案,

Query<Resource> resultset = ofy().load().type(Resource.class).filter("key",keyPath);
Resource firstResult = resultset.first().now();
于 2017-07-14T14:34:59.663 回答