JPA:PGobject无法投射

时间:2013-02-18 18:31:53

标签: java postgresql jpa casting

我第一次使用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();

有人知道什么是错的?

2 个答案:

答案 0 :(得分:0)

我注意到您正在使用JPQL语法进行nativeQuery,您是否使用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();

没有类强制转换异常返回?

答案 1 :(得分:0)

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

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

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