【发布时间】:2017-03-11 04:46:28
【问题描述】:
我正在尝试寻找一个去SUM关系字段,但总是抛出异常~
那么可以使用领域数据库对关系进行求和吗?
如果你知道我在哪里写错了,请告诉我,非常感谢:)
假设我有以下数据集:
public class Service extends RealmObject {
private String id;
private RealmList<Service> extras;
private boolean selected;
// getters and setters
}
public class ServiceExtra extends RealmObject {
private String id;
private float price;
private boolean selected;
// getters and setters
}
然后,我猜查询代码是这样的
Realm.getDefaultInstance()
.where(Service.class)
.equalTo("selected",true)
.equalTo("extras.selected",true)
.sum("extras.price");
但总是抛出
java.lang.IllegalArgumentException: Field does not exist: extras.price
at io.realm.RealmObjectSchema.getAndCheckFieldIndex(RealmObjectSchema.java:756)
at io.realm.RealmQuery.sum(RealmQuery.java:1592)
更新
Realm realm = Realm.getDefaultInstance();
Service service = realm.where(Service.class).equalTo("selected",true).findFirst();
int totalPrice = service.extras.where().equalTo("selected",true).sum("price");
或
Realm realm = Realm.getDefaultInstance();
RealmResult<Service> services = realm.where(Service.class)
.equalTo("selected",true).finAll();
int totalPrice;
for(Service service : services){
totalPrice += service.extras.where()
.equalTo("selected",true).sum("price");
}
【问题讨论】:
-
你找到答案了吗?如果可以,请与我们分享?
标签: realm-java