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サブクエリではありません。指定された電話番号のレコードに対して標準クエリを実行するだけです。次に、一致するレコードごとに、そのレコードを参照するレコードのクエリを実行します。 –