出于某种原因,我需要将我的数据存储在Map中,并且我不想逐个声明我的客观化实体的每个属性。
例如,这是我的地图的样子:
"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();
但是我没有得到任何结果,尽管有些数据符合此查询......
我必须告诉你,它适用于一个大型的过滤器...... 它也适用于带有“=”的几个过滤器:
这是我的实体:
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;
}
}
非常感谢
答案 0 :(得分:2)
这不是你的错,也不是Objectify问题。
根据数据存储documentation:
不等式过滤器最多只能限制一个属性
做你想做的事:
.keys()
而不是.list()
)。