私は次のクラスを持っています:
@PersistenceCapable
public class User implements Serializable {
@PrimaryKey
private long userId;
@Persistent(defaultFetchGroup = "true")
private Set<String> deviceIds;
@Persistent(defaultFetchGroup = "true")
private long schoolClass;
@Persistent(defaultFetchGroup = "true")
private Set<Long> subjects;
}
contains を使用してクエリを実行すると、常に空のリストが表示されます
PersistenceManager pm = PMF.get().getPersistenceManager();
Query q = pm.newQuery(User.class);
q.setFilter("subjects.contains(subject)");
List<User> userList = (List<User>) q.execute(Arrays.asList(new Long(13)));
q.closeAll();
私は何を間違っていますか?データストアには、サブジェクト セットに long 値 13 を持つ 2 人のユーザーがいます。したがって、クエリは 2 つの結果を返す必要があります。
このクエリをデバッグすると、q.execute() の直後に userList をクリックすると InvocationException が発生することがわかります。