3

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 がサポートしていないものですか?

ありがとう!

4

1 に答える 1