このクエリがpostgreデータベースで直接機能するのはなぜですか:
select m from medicine_case m WHERE m.id IN (select m.id FROM medicine_case m LEFT OUTER JOIN patient ON m.patient=patient.id ORDER BY patient.surname ASC )
正確に対応する型指定されたクエリを使用した OpenJpa の AND:
String sql = " select m from medicine_case m WHERE m.id IN (select m.id FROM medicine_case m LEFT OUTER JOIN "
+ "patient ON m.patient=patient.id ORDER BY patient.surname ASC )";
TypedQuery<MedicineCase> query = persistenceClient.createQueryMC(sql);
setParameter(query);
query.setFirstResult(first);
query.setMaxResults(count);
私に与えます:
org.apache.openjpa.persistence.ArgumentException: Encountered "m . id IN ( select m . id FROM medicine_case m LEFT OUTER JOIN patient ON" at character 37, but expected: ["(", ")", "*",.... etc etc
どうして?????それはとても奇妙で、私を夢中にさせます!
エンティティ マネージャーからクエリを作成するコード:
return entityManager.createQuery(sql, MedicineCase.class);
そしてそれを実行するコード:
return query.getResultList().iterator();