![](/img/trans.png)
[英]java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.entity.survey.SurveyReport
[英]java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.xl.entity.Users
这是代码:
public Users login(String username) {
Users user=null;
try {
String hql="select user.name,user.password from Users user where user.name=:name";
Query query = session.createQuery(hql);
query.setString("name", username);
user=(Users) query.list().get(0);
} catch (HibernateException e) {
e.printStackTrace();
}
return user;
}
错误:
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.xl.entity.Users
at com.xl.impl.HouseDaoImpl.login(HouseDaoImpl.java:51)
at com.xl.biz.HouseBiz.login(HouseBiz.java:25)
at com.xl.Servlet.UserServlet.doGet(UserServlet.java:25)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
(翻译由Google翻译提供)
如果需要Users对象,请编辑查询,使其类似于
String hql="from Users user where user.name=:name";
否则结果将是对象数组,因此您需要使用转换器或将其强制转换为object []:
String hql="select user.password from Users user where user.name=:name";
Query query = session.createQuery(hql);
query.setString("name", username);
Object[] result =(Object[]) query.list().get(0);
String password = result[0];
您可以作为public Users(String name, String password)
为Users
创建另一个构造函数,并将查询更改为
String hql="select new yourpath.Users(user.name,user.password) from Users user
where user.name=:name";
您需要以这种方式支持根实体的ResultTransformer
Query query = session.createQuery(hql);
query.setResultTransformer(RootEntityResultTransformer.INSTANCE);
query.list()
使用投影(选择列表)将产生Object[]
类型的结果: ResultTransformer
将创建一个User
对象并映射原始Object[]
以更正User
的属性
由于query.list()
返回List
,并且您在此处将List
的内容强制转换为User
类型,因此,由于异常, Object can not be cast to User
强制转换Object can not be cast to User
。 请确保以用户形式获取内容。
您可以进行检查:
if(query.list() instanceOf User){
// can cast to user.
}else{
// can not cast to User.
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.