3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception org.apache.jasper.JasperException: java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java: 522 ) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java: 416 ) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java: 337 ) org.apache.jasper.servlet.JspServlet.service(JspServlet.java: 266 ) javax.servlet.http.HttpServlet.service(HttpServlet.java: 803 ) root cause java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer net.java2000.notepad.service.impl.hibernate.PostServiceHibernateImpl.countAllSubject(PostServiceHibernateImpl.java: 24 ) org.apache.jsp.jsph.index_jsp._jspService(index_jsp.java: 93 ) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java: 70 ) javax.servlet.http.HttpServlet.service(HttpServlet.java: 803 ) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java: 374 ) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java: 337 ) org.apache.jasper.servlet.JspServlet.service(JspServlet.java: 266 ) javax.servlet.http.HttpServlet.service(HttpServlet.java: 803 ) note The full stack trace of the root cause is available in the Apache Tomcat/ 6.0 . 16 logs. |
1.主要代码
Query query = getSession().createQuery(hql);
query.setInteger(0, id);
Long count=(Long) query.iterate().next();//返回值是Long
return count;
2.解决Long转为Integer的问题
代码:
Query query = getSession().createQuery(hql);
query.setInteger(0, id);
Number count= (Number) query.iterate().next();//返回值是Long
return count.intValue();
测试:
Integer id=1;
String hql="SELECT COUNT(s.suiteExamination.suiteId) FROM LogSuiteExamination s WHERE s.suiteExamination.suiteId=?";
Integer count=(Integer) new LogSuiteExaminationDaoImpl().queryLogCountById(hql, id);
System.out.println(count);
因为无论是Long还是Integer,还是BigInteger,它们都是Number的子类,所以用Number去cast这个结果是肯定不会错的,然后,最好定义在Number里面这些方法可以统一的返回需要的类型;
byte byteValue()
以 byte 形式返回指定的数值。
abstract double doubleValue()
以 double 形式返回指定的数值。
abstract float floatValue()
以 float 形式返回指定的数值。
abstract int intValue()
以 int 形式返回指定的数值。
abstract long longValue()
以 long 形式返回指定的数值。
short shortValue()
以 short 形式返回指定的数值。
=====================================================
java.lang
类 Number
java.lang.Object
java.lang.Number
所有已实现的接口:
Serializable
直接已知子类:
AtomicInteger, AtomicLong, BigDecimal, BigInteger, Byte, Double, Float, Integer, Long, Short