0

JPA を初めて使用していますが、postgres データベースにクエリを実行しようとすると、次のエラーが発生します。

Exception in thread "main" java.lang.ClassCastException: org.postgresql.util.PGobject cannot be cast to [Ljava.lang.Object;

コードは次のとおりです。

List<Results> r = em.createNativeQuery("SELECT r FROM RESULTS r\n"
            + "INNER JOIN SESSION S ON s.SESSION_ID = r.SESSION_ID WHERE s.SESSION_ID = '" + sessionId + "'").getResultList();

私はすでにObject []で試しましたが、エラーはまだ同じです

List<Object[]> r = em.createNativeQuery("SELECT r FROM RESULTS r\n"
            + "INNER JOIN SESSION S ON s.SESSION_ID = r.SESSION_ID WHERE s.SESSION_ID = '" + sessionId + "'").getResultList();

誰かが何が悪いのか知っていますか?

4

2 に答える 2

0

JPQLではなくSQLを使用していると仮定すると、なぜこれを使用しないのですか?

List<Object> result = query.getResultList();

SQLで1つの列のみを選択しているため、各行をオブジェクトにマップする方が理にかなっています。

于 2013-02-19T08:47:47.560 に答える
0

NativeQuery に JPQL 構文を使用していることに気付きました。このコードを createQuery method() で試しましたか?

List<Results> r = em.createQuery("SELECT r FROM RESULTS r\n"
            + "INNER JOIN SESSION S ON s.SESSION_ID = r.SESSION_ID WHERE s.SESSION_ID = '" + sessionId + "'").getResultList();

SQL が正しく、ネイティブ クエリを使用している場合は、

Query query = em.createNativeQuery(SELECT * FROM RESULTS r\n"
                + "INNER JOIN SESSION S ON s.SESSION_ID = r.SESSION_ID WHERE s.SESSION_ID = '" + sessionId + "'");
List<Object[]> result = query.getResultList();

クラスキャスト例外なしで戻る?

于 2013-02-18T21:25:21.630 に答える