ID に基づいて ObjectDB に複数の値を選択させるのに問題があります。私のクエリは非常に単純です:
Query query = getEntityManager().createQuery("SELECT i FROM " + getEntityClass().getSimpleName() + " i WHERE i.id IN :ids", entityClass);
query.setParameter("ids", ids);
List<Object> values = query.getResultList();
しかし、これは常に空のリストを返します。
ids リストには、既存の ID のリストがすべて Long オブジェクトとして含まれています。これをトリプルチェックしました。
次のようなクエリ:
entityManager.find(getEntityClass(), id);
...と...
Query query = entityManager.createQuery("SELECT i FROM " + getEntityClass().getSimpleName() + " i", entityClass);
...うまくいきます。
また、もしそうなら: entityManager.find(getEntityClass(), 1L);
正しい結果が得られます:単一のインスタンスです。
しかし:
List<Long> ids = new LinkedList<Long>();
ids.add(1L);
Query query = getEntityManager().createQuery("SELECT i FROM " + getEntityClass().getSimpleName() + " i WHERE i.id IN :ids", entityClass);
query.setParameter("ids", ids);
List<Object> values = query.getResultList();
空のリストをvalues
変数に返します。
私は何が欠けていますか?これは ObjectDB がサポートしていないものですか?
ありがとう!