1
我不知道我在這裏弄錯了什麼?它抱怨說:「只有當所有過濾器都是'等於'過濾器時才支持連接。」當查詢被執行時。我該如何解決這個問題?爲什麼錯誤「僅當所有過濾器均爲'等於'過濾器時才支持連接。」
Query query = pm.newQuery(ItemInfo.class);
if (lastSyncDate != null) {
query.declareVariables("DeviceInfo deviceInfo");
query.setFilter("this.toDevices.contains(deviceInfo) && " +
"deviceInfo.phoneNumber == numberParam && createdDate > lastSyncDateParam");
query.declareParameters("String numberParam, java.util.Date lastSyncDateParam");
map.put("lastSyncDateParam", lastSyncDate);
} else {
query.declareVariables("DeviceInfo deviceInfo");
query.setFilter("this.toDevices.contains(deviceInfo) && deviceInfo.phoneNumber == numberParam");
query.declareParameters("String numberParam");
}
map.put("numberParam", "123456");
query.setOrdering("createdDate desc");
@PersistenceCapable(identityType = IdentityType.APPLICATION, detachable = "true")
public class ItemInfo {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;
@Persistent
private String number;
@Persistent
private List<DeviceInfo> toDevices;
}
如何以這種方式做子查詢? – angelokh
@angelokh這不是一個子查詢 - 只需對給定電話號碼的記錄執行標準查詢即可。然後,對於每個匹配記錄,對引用該記錄的記錄執行查詢。 –