-1

このクエリが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();

4

2 に答える 2