java , jpa 强制转换异常

标签 java jpa casting

这是我第二次玩jpa,

我写了这段代码:

   String queryString = "SELECT e.uidprofile, e.profilecode, e.catUso, max(e.zonaClim), e.classePrev, e.beta1, e.beta2, e.beta3, e.beta4"
            + " FROM "
            +  entityClass.getSimpleName()
            + " e "
            + " WHERE e.catUso like :code "
            + " group by e.uidprofile, e.profilecode, e.catUso, e.classePrev, e.beta1, e.beta2, e.beta3, e.beta4"
            + " order by e.uidprofile";

    Query query = entityManager.createQuery(queryString);

    query.setParameter("code", "C" + "%");

    List<SamTbProfileMapping> resultList = query.getResultList();

    ClassLoader c1 = this.getClass().getClassLoader();
    ClassLoader c2 = resultList.getClass().getClassLoader();

    if(resultList.size()>0){
        System.out.println(resultList.get(0).getCatUso());
    }

调试:

  • resultList具有 SamTbProfileMapping 的所有字段具有正确的值(value)观
  • 物体的数量是正确的
  • 行后List<SamTbProfileMapping> resultList = query.getResultList(); 我得到C2nullSystem.out.println(resultList.get(0).getCatUso()); 表示 resultList 无法转换为 SamTbProfileMapping

最佳答案

您正在通过查询检索数组列表。不是对象列表。

"Select a, b, c, d, from something" - 返回 List<Object[]>

然后按照与查询中相同的顺序访问单独的成员。 例如:

 List<Object[]> myList = query.getResultList();

 MyAClass a1 = (MyAClass) myList.get(0)[0];
 MyBClass b1 = (MyBClass) myList.get(0)[1];

要选择一个对象列表,您可以使用:

"select a from MyClass a where ..."

然后

 List<MyClass> myList = query.getResultList();
 MyClass result1 = myList.get(0);

关于java , jpa 强制转换异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13287107/

相关文章:

java - Gradle 不提供子项目中的依赖项

java - 如何知道用户何时关闭 Java 中使用 exec() 执行的程序

java - 在 Java 中通过 UDP 发送 C++ 结构

r - 使用具有多个 value.var 的 dcast 时出错

java - Java 强制转换会引入开销吗?为什么?

java - 将值读入从 Java 代码运行的 C 变量

java - 拖放程序项目

java - 两个依赖链 OSGI

hibernate - 使用 JPA 或 native 查询计算时间

java - jpa删除错误,同时打印更新sql