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

我注意到您正在对 nativeQuery 使用 JPQL 语法,您是否使用 createQuery 方法()尝试过此代码?

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 回答
0

假设您使用的是 SQL 而不是 JPQL,那么您为什么不直接使用它呢?

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

由于您只在 SQL 中选择一列,因此将每一行映射到一个对象更有意义。

于 2013-02-19T08:47:47.560 回答