Google app engine 将筛选器链接到Objectify不';行不通
出于某种原因,我需要将数据存储在映射中,我不想逐个声明objectify实体的每个属性 例如,以下是我的地图的外观:Google app engine 将筛选器链接到Objectify不';行不通,google-app-engine,objectify,Google App Engine,Objectify,出于某种原因,我需要将数据存储在映射中,我不想逐个声明objectify实体的每个属性 例如,以下是我的地图的外观: "COMPANY_NAME" -> "something" "TURNOVER_Min" -> 1000000 (a long value) "CLIENT_STATUS"-> true (a boolean value) 我想执行这样的查询: List<Lead> leads = ofy().load().type(Lead.class).fil
"COMPANY_NAME" -> "something"
"TURNOVER_Min" -> 1000000 (a long value)
"CLIENT_STATUS"-> true (a boolean value)
我想执行这样的查询:
List<Lead> leads = ofy().load().type(Lead.class).filter("data.NET_INCOME_MIN >", 5.0).filter("data.NET_INCOME_MAX <", 100.0).list();
List leads=ofy().load().type(Lead.class).filter(“data.NET\u INCOME\u MIN>”,5.0).filter(“data.NET\u INCOME\u MAX这不是你的错,也不是客观化问题
根据数据存储:
不等式过滤器最多限于一个属性
要做您想做的事情:
使用第一个过滤器仅检索实体的键(使用.keys()
而不是.list()
)
使用第二个过滤器仅检索实体的键
要执行ANDing,需要获取上面检索到的两个关键点集的交点
现在,您有了所需实体的密钥,可以通过批处理get操作获取实体
谢谢你,这对我帮助很大!我用这个逻辑处理了许多其他案例(其中一个:)
import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import com.googlecode.objectify.annotation.Entity;
import com.googlecode.objectify.annotation.Id;
import com.googlecode.objectify.annotation.Index;
@Entity
public class Lead implements Serializable {
private static final long serialVersionUID = 5920146927107230150L;
@Id
private String url;
@Index
private Date dateCreated;
@Index
private Map<String, Object> data = new HashMap<>();
public Lead() {}
public Lead(String url) {
this.url = url;
this.dateCreated = new Date();
}
public void addData(String key, Object value) {
data.put(key, value);
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public Date getDateCreated() {
return dateCreated;
}
public void setDateCreated(Date dateCreated) {
this.dateCreated = dateCreated;
}
public Map<String, Object> getData() {
return data;
}
public void setData(Map<String, Object> data) {
this.data = data;
}
}