yasar
yasar

Reputation: 15

springMVC collections and hibrnate 3.3.2 GA java.lang.Integer cannot be cast to java.lang.Long

Iam getting a bad error on casting.I don't know how to fix it..Please...help me to get out of this.springMVC collections and hibrnate 3.3.2 GA java.lang.Integer cannot be cast to java.lang.Long this exception is not giving any error...still it is not running...........Don't know..........

HTTP Status 500 - 

--------------------------------------------------------------------------------

type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:656)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


root cause 

java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
    com.os.springjpa.controller.BookController.listPaging(BookController.java:103)
    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.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
    org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426)
    org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


note The full stack trace of the root cause is available in the Apache Tomcat/6.0.20 logs.


--------------------------------------------------------------------------------

Apache Tomcat/6.0.20

## BookController.java ##

package com.os.springjpa.controller;

import javax.validation.Valid;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.os.springjpa.dao.BookDao;
import com.os.springjpa.entity.Book;
import com.os.springjpa.utils.Utils;

/**
 * @author kris;
 *         This class is using Path Variable style as example like Rest
 *         Style. Path Variable will handling like url string but so simple then
 *         url string. I'm also still not found how to make url string as simple
 *         as posible in view layer.
 */
@Controller
@RequestMapping("/book")
public class BookController {

    @Autowired
    private BookDao bookDao;
    private final int PAGE_SIZE = 2;
    Logger logger = Logger.getLogger(BookController.class);

    @RequestMapping(method = RequestMethod.GET)
    public String form(Model model) {
    System.out.println(org.hibernate.Version.getVersionString());
        model.addAttribute(new Book());
        return "book/create";
    }

    @RequestMapping(method = RequestMethod.POST)
    public String create(@Valid Book book, BindingResult bindingResult) {
        if (bindingResult.hasErrors()) {
            logger.info("Error has been detect");
            return "book/create";
        }
        if (bookDao.saveOrUpdate(book)) {
            book = bookDao.getByIsbn(book.getIsbn());
            return "redirect:/book/" + book.getId();
        } else {
            return "/exception";
        }
    }

    @RequestMapping(method = RequestMethod.PUT)
    public String update(@Valid Book book, BindingResult bindingResult) {
        if (bindingResult.hasErrors()) {
            logger.info("Error has been detect");
            return "book/update";
        }
        if (bookDao.saveOrUpdate(book)) {
            return "redirect:/book/" + book.getId();
        } else {
            return "/exception";
        }
    }

    @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
    public String delete(@PathVariable Integer id) {
        logger.info("Delete Method Has Call");
        Book book = bookDao.getById(id);
        if (bookDao.delete(book)) {
            return "redirect:/book/list/1";
        } else {
            return "/exception";
        }
    }

    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
    public String detail(@PathVariable Integer id, Model model) {
        Book book = bookDao.getById(id);
        if (book == null) {
            return "/exception";
        }
        model.addAttribute(book);
        return "book/detail";
    }

    @RequestMapping(value = "/edit/{id}", method = RequestMethod.GET)
    public String edit(@PathVariable Integer id, Model model) {
        Book book = bookDao.getById(id);
        if (book == null) {
            return "/exception";
        }
        model.addAttribute(book);
        return "book/update";
    }

    @RequestMapping(value = "/list/{page}", method = RequestMethod.GET)
    public String listPaging(@PathVariable Integer page, Model model) {
        // Create simple pagination
        model.addAttribute("books", bookDao.getAll((page - 1) * PAGE_SIZE, PAGE_SIZE));
       model.addAttribute("pageCount", Utils.getPageCount(PAGE_SIZE, (Long)bookDao.countAllBook().get(0)));
        return "book/list";
    }

}

Utils.java


package com.os.springjpa.utils;

public class Utils {

    public static int getPageCount(int pageSize, Long row) {
        int result = 0;
        if (row % pageSize == 0) {
            result = (int) (row / pageSize);
        } else {
            result = (int) (row / pageSize + 1);
        }
        return result;
    }
}

Please Help me....

Upvotes: 0

Views: 1849

Answers (2)

Saigitha Vijay
Saigitha Vijay

Reputation: 466

Try this,

model.addAttribute("pageCount", Utils.getPageCount(PAGE_SIZE, Long.parseLong(bookDao.countAllBook().get(0).toString())));

Upvotes: 1

guido
guido

Reputation: 19224

In BookController.java line 103

 model.addAttribute("pageCount", Utils.getPageCount(PAGE_SIZE, 
                                 new Long(bookDao.countAllBook().get(0))));

Upvotes: 1

Related Questions