java - 如何在 hibernate 中解决 java.lang.ClassCastException : for query. list()

标签 java hibernate

我正在使用 Hibernate 执行选择选项,查询正在执行但在 query.list() 方法中出现异常,

这是我的代码,

String hql="select a.vehicleno, a.lat, a.lng, a.status, a.rdate, a.rtime from LatitudeBean a, VehicleRegisterBean b where a.vehicleno=b.vehicleno and b.clientid= :clientId and b.groupid in(select groupid from GroupDetails where groupname= :groupname and clientid= :gdclientId)"; // valid query
Query query =sessio.createQuery(hql);
List<LatitudeBean> groupList = (List<LatitudeBean>)query.list(); //Here I am getting exception
for(LatitudeBean arr : groupList){
        System.out.println(arr.getVehicleno());
    }

异常(exception)是,

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.aurodisplay.its.beans.LatitudeBean
at com.abc.its.controller.LoginController.doPost(LoginController.java:83)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)

如何转换从 list() 方法返回的列表。请任何人帮助我。

最佳答案

问题是您的查询没有选择实体,而只是实体的属性。

因此结果将不是实体列表,而是对象数组列表(哪些数组将保存选定的属性)。

试试这个:

List<Object[]> groupList = (List<Object[]>) query.list();
for(Object[] arr : groupList) {
    System.out.println("vehicleno: " + arr[0]);
}

或者,如果您想选择整个实体,请像这样修改您的查询:

String hql = "select a from LatitudeBean a, VehicleRegisterBean b where ...";

这样你的原始代码就可以工作了。

关于java - 如何在 hibernate 中解决 java.lang.ClassCastException : for query. list(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25524952/

相关文章:

java - 在 Java 6 中模拟 try-with-resources 的最佳方法是什么?

java - 查找没有多对多关系的 Hibernate 对象

JavaFX TextArea如何使用自动换行符设置文本

java - HttpClient 执行两次后停止在循环中执行相同的 HttpGet 方法

java - 使用@Formula 增强 Spring 宠物诊所

java - 在Hql-Initialization中创建sessionFactory

mysql - Hibernate 在为 mysql 生成 ddl 时添加唯一约束

java - 在 hibernate 中注释派生数据库列

java - 动画 View 移出我的布局

java - 如何在 java 应用程序和 adobe air 应用程序之间传递消息?