我第一次使用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();
有人知道什么是错的?
答案 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的每一行更有意义。