saveOrUpdate Hibernate上的NullPointerError

时间:2015-06-13 21:22:17

标签: java spring hibernate

我正在尝试更新此函数中的对象:

public void priceLot(long lotId) throws Exception {
    Lot lot = this.getLotById(lotId);
    List list = bookService.getBooksByLotNumber(lotId);
    Book book = new Book();
    ProductAvailability pa = null;
    float retail = 0;
    for(int i = 0; i < list.size(); i++) {
        book = (Book) list.get(i);
        retail += book.getPrice();
    }
    if(retail == 0) {
        retail = 1;
    }
    float ratio = lot.getAmount() / retail;
    for(int i = 0; i < list.size(); i++) {
        book = (Book) list.get(i);
        pa = book.getProductAvailability();
        pa.setCost(pa.getRetail() * ratio);
        productAvailabilityService.saveOrUpdateProductAvailability(pa);
    }
    lot.setPriced(true);
    this.saveOrUpdate(lot);
}

它跑到

productAvailabilityService.saveOrUpdateProductAvailability(pa);

在这里,它只是死路而且返回NullPointerException。我不知道为什么要这样做 - 什么都不应该是空的。这是堆栈跟踪:

java.lang.NullPointerException
    com.samwellers.service.LotService.priceLot(LotService.java:69)
    com.samwellers.control.admin.lotadmin.PriceLotController.handleRequest(PriceLotController.java:29)
    org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:45)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:806)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:736)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:396)
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:360)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:643)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:723)

不应该将任何null传递给saveOrUpdateProductAvailability - 并且该函数本身应该没有问题。它可以在很多其他地方工作。

2 个答案:

答案 0 :(得分:0)

你应该提供一些信息。据我所知,在调用异常的时候,作为productAvailibilityService的pa变量都可以为null。

您是否已调试并检查了pa设置是否正确,该服务是否也可用?

答案 1 :(得分:0)

我明白了。我忘了在清单中声明此函数所在的服务需要ProductAvailabilityService。因此,没有ProductAvailabilityService可供其使用。