Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > getHibernateTemplate()+select count


Автор: lv151 13.3.2008, 23:25
Код


public Integer getCountTovars() throws DataAccessException,java.sql.SQLException{
    
    List list = getHibernateTemplate().find("select count(*) from Tovars");
            Integer count = (Integer) list.get(0);
        return count.intValue();


}



Вываливается исключение:
Код


java.lang.ClassCastException: java.lang.Long
    DAOImpl.getCountTovars(Unknown Source)
    RMIServiceImpl.getTovars(Unknown Source)


Автор: Kangaroo 13.3.2008, 23:39
Прикасть просто Лонг к Инту:
Код

public Integer getCountTovars() throws DataAccessException,java.sql.SQLException{
    
    List list = getHibernateTemplate().find("select count(*) from Tovars");
            Long count = (Long) list.get(0);
        return (Integer)count;
}

Автор: lv151 13.3.2008, 23:56
Long count = (Long) list.get(0);-ругается на это, должен быть Object.

Автор: Kangaroo 14.3.2008, 00:00
lv151, а на Integer не ругался что ли??

Добавлено через 26 секунд
А вообще странно, как ругается? Ворнинг? Или что?

Автор: lv151 14.3.2008, 00:07
В первом случае вываливается исключение:

Код

java.lang.ClassCastException: java.lang.Long
    DAOImpl.getCountTovars(Unknown Source)
    RMIServiceImpl.getTovars(Unknown Source)
           sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    java.lang.reflect.Method.invoke(Unknown Source)
    org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:335)
    org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:181)
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:148)
    org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
    org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:176)
    $Proxy1.getCountTovars(Unknown Source)
    struts.actions.ShowTovarsAction.execute(Unknown Source)
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
    org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    filter.SessionCheck.doFilter(Unknown Source)


Long count = (Long) list.get(0); - Ant требует Object smile

лажа какая то... :(

Автор: Kangaroo 14.3.2008, 00:47
как это Ант требует обджект?

а в первом случае - в какой строке вылетает икспешн

Автор: lv151 14.3.2008, 01:07
Когда компилирую:

Код

inconvertible types
    [javac] found   : java.lang.Object
    [javac] required: long
    [javac]         long count = (long) list.get(0);


экспешн вываливается, когда я запускается функция getCountTovars():
Код

public Integer getCountTovars() throws DataAccessException,java.sql.SQLException{
    
    List list = getHibernateTemplate().find("select count(*) from Tovars");
            Integer count = (Integer) list.get(0);
        return count.intValue();



}

Автор: Kangaroo 14.3.2008, 01:31
Так long с большой буквы!!  smile Тебе нужен Long, класс-обертка к маленькому лонгу.

Автор: lv151 14.3.2008, 01:36
А чем они отличаются?

 return (Integer)count;
javac] found   : java.lang.Long
    [javac] required: java.lang.Integer
    [javac]         return (Integer)count;
    [javac]                         ^
    [javac] 1 error

Автор: Kangaroo 14.3.2008, 02:04
Цитата(lv151 @  14.3.2008,  00:36 Найти цитируемый пост)
[javac]         return (Integer)count;

Вот блин, это я под вечер  smile Извиняюсь.

Вот правильный, скопируй и все заработает:
Код

public Integer getCountTovars() throws DataAccessException,java.sql.SQLException{
    List list = getHibernateTemplate().find("select count(*) from Tovars");
            Long count = (Long) list.get(0);
        return count.intValue();
}



Цитата(lv151 @  14.3.2008,  00:36 Найти цитируемый пост)
А чем они отличаются?

long - это примитивный тип
Long - это класс

Автор: lv151 15.3.2008, 23:00
Понял, спасибо за помощь! 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)