使用Hibernate和Spring MVC从数据库中检索数据。错误-“ java.lang.NumberFormatException:对于输入字符串:”

我正在尝试使用搜索页面创建一个简单的Web应用程序。我已经实现了CRUD部分,并且可以正常工作。我是编码新手。搜索选项出现问题。错误-“ java.lang.NumberFormatException:对于输入字符串:” ISBN“”

我需要根据给定的搜索条件获取数据列表。

<b>Hello</b> <i><u>stack</u></i> look https://zh.wikipedia.org/wiki/%E9%A3%9E%E9%B9%B01%E7%BE%8E%E5%88%86%E7%A1%AC%E5%B8%81
Database table name = Items 
Columns 
* id - primary key 
* ISBN - String 
* title - String
category_id - String (I changed this from Int to String as I decided to use the book name instead,to make it simple. So this is not an ID its basically the book name so it's kept as a String)
* Author - String 
* publisher_id - String (same logic as category_id)
* price - FLOAT
* stock - INT
* photo_id - INT

使用Hibernate和Spring MVC从数据库中检索数据。错误-“ java.lang.NumberFormatException:对于输入字符串:”

ItemsController.java

DB DESC

IteamsDAO

@RequestMapping(value ="/search_1")
    public ModelAndView search_1(HttpServletRequest request,HttpServletResponse response) {

        String category_id = request.getParameter("category_id");
        String publisher_id = request.getParameter("publisher_id");

        List<Items> listItems2 = ItemsService.searchitems(category_id,publisher_id);

        ModelAndView model = new ModelAndView();
        model.setViewName("searchResult");
        model.addObject("items",listItems2);

        return model;
    }

ItemsDAOImpl

package com.jwt.dao;

import java.util.List;

import com.jwt.model.Items;

public interface ItemsDAO {

    public void additems(Items items);

    public List<Items> getallitems();

    public void deleteitems(Integer itemsId);

    public Items updateitems(Items items);

    public Items getitems(int itemsId);

    public List<Items> searchitems(String category_id,String publsiher_id);
}

Items.java

package com.jwt.dao;

import java.util.List;

import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import com.jwt.model.Items;

@Repository ("ItemsDAO")
public class ItemsDAOImpl implements ItemsDAO {

    @Autowired
    private SessionFactory sessionFactory;

    public void additems(Items items) {
        sessionFactory.getcurrentSession().saveOrupdate(items);

    }

    @SuppressWarnings("unchecked")
    public List<Items> getallitems() {

        return sessionFactory.getcurrentSession().createQuery("from Items")
                .list();
    }

    @Override
    public void deleteitems(Integer itemsId) {
        Items items = (Items) sessionFactory.getcurrentSession().load(
                Items.class,itemsId);
        if (null != items) {
            this.sessionFactory.getcurrentSession().delete(items);
        }

    }

    public Items getitems(int itemsId) {
        return (Items) sessionFactory.getcurrentSession().get(
                Items.class,itemsId);
    }

    @Override
    public Items updateitems(Items items) {
        sessionFactory.getcurrentSession().update(items);
        return items;
    }

    @SuppressWarnings("unchecked")
    public List<Items> searchitems(String category_id,String publsiher_id) {

        return sessionFactory.getcurrentSession().createQuery("from Items E where E.category_id = category_id AND E.publisher_id=publisher_id")
                .list();

    }

}

ItemsService.java

package com.jwt.model;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "items")
public class Items implements Serializable {

    private static final long serialVersionUID = -3465813074586302847L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;

    @Column
    private String ISBN;

    @Column
    private String title;

    @Column
    private String category_id;

    @Column
    private String Author;


    @Column
    private String publisher_id;

    @Column
    private float price;

    @Column
    private int stock;

    @Column
    private int photo_id;



    public int getid() {
        return id;
    }

    public void setid(int id) {
        this.id = id;

    }

    public String getISBN() {
        return ISBN;
    }

    public void setISBN(String ISBN) {
        this.ISBN = ISBN;
    }

    public String gettitle() {
        return title;
    }

    public void settitle(String title) {
        this.title = title;
    }

    public String getcategory_id() {
        return category_id;
    }

    public void setcategory_id( String category_id) {
        this.category_id = category_id;
    }

    public String getauthor() {
        return Author;
    }

    public void setauthor(String Author) {
        this.Author = Author;
    }

  public String getpublisher_id() {
        return publisher_id;
    }

    public void setpublisher_id(String publisher_id) {
        this.publisher_id = publisher_id;
    }


     public float getprice() {
        return price;
    }

    public void setprice(float price) {
        this.price = price;
    }

     public int getstock() {
        return stock;
    }

    public void setstock(int stock) {
        this.stock = stock;
    }


     public int getphoto_id() {
        return photo_id;
    }

    public void setphoto_id(int photo_id) {
        this.photo_id = photo_id;
    }
}

ItemsServiceImpl.java

package com.jwt.service;

import java.util.List;

import com.jwt.model.Items;

public interface ItemsService {

    public void additems(Items items);

    public List<Items> getallitems();

    public void deleteitems(Integer itemsId);

    public Items updateitems(Items items);

    public Items getitems(int itemsId);

    public List<Items> searchitems(String category_id,String publsiher_id);


}

输入搜索JSP页面

search_1.jsp


package com.jwt.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.jwt.dao.ItemsDAO;
import com.jwt.model.Items;

@Service
@Transactional
public class ItemsServiceImpl implements ItemsService {

    @Autowired
    private ItemsDAO itemsDAO;

    @Override
    @Transactional
    public void additems(Items items) {
        itemsDAO.additems(items);
    }

    @Override
    @Transactional
    public List<Items> getallitems() {
        return itemsDAO.getallitems();
    }

    @Override
    @Transactional
    public void deleteitems(Integer itemsId) {
        itemsDAO.deleteitems(itemsId);
    }

    public Items getitems(int itemsid) {
        return itemsDAO.getitems(itemsid);
    }

    public Items updateitems(Items items) {
        // TODO Auto-generated method stub
        return itemsDAO.updateitems(items);
    }

    public void setitemsDAO(ItemsDAO itemsDAO) {
        this.itemsDAO = itemsDAO;
    }

    @Override
    @Transactional
    public List<Items> searchitems(String category_id,String publsiher_id) {
        return itemsDAO.searchitems(category_id,publsiher_id);   
        }


}

搜索结果将在此处填充

searchResult.jsp

<div align="center">
        <h1>Search Items</h1>


        <form action="search_1" method="get" modelAttribute="items">
        <table>
        <tr>
            <td>Category:</td>
            <td>
          <select  type="text" name="category_id">
            <option value="Book">Book</option>
            <option value="Audio Books">Audio Books</option>
            <option value="Videos">Videos</option>
            <option value="Music">Music</option>
          </select>
             </td>
        </tr>

        <tr>
            <td>Publisher ID:</td>
            <td>
          <select  type="text" name="publisher_id">
            <option value="Harper Collins">Harper Collins</option>
            <option value="Penguins">Penguins</option>
            <option value="Franciscan Media">Franciscan Media</option>
            <option value="Orbis">Orbis</option>
          </select>
             </td>
        </tr>



        <tr>
                <td colspan="2" align="center"><input type="submit" value="search"></td>
            </tr>

        </table>


        </form>


    </div>

完整的错误消息



      <div align="center">
        <h1>Book shop Inventory</h1>

        <table>

            <th>ISBN</th>
            <th>Title</th>
            <th>Category</th>
            <th>Author</th>
            <th>Publisher</th>
            <th>Price</th>
            <th>Stock</th>
            <th>Photo</th>


            <c:forEach var="items" items="${listItems2}">
                <tr>


                    <td>${items.ISBN}</td>
                    <td>${items.title}</td>
                    <td>${items.category_id}</td>
                    <td>${items.author}</td>
                    <td>${items.publisher_id}</td>
                    <td>${items.price}</td>
                    <td>${items.stock}</td>
                    <td>${items.photo_id}</td>


                </tr>
            </c:forEach>
        </table>
         </br>
        <input type="button" class="btn btn-info" value="Search Again" onclick="window.location.href='http://localhost:8080/SpringMVCHibernateCRUD_1/search'">
    </div>

eileencxy227 回答:使用Hibernate和Spring MVC从数据库中检索数据。错误-“ java.lang.NumberFormatException:对于输入字符串:”

您必须将标准设置为参数才能在ItemsDAOImpl中获得结果

public List<Items> searchitems(String category_id,String publsiher_id) {

        return sessionFactory.getCurrentSession().createQuery("from Items E where E.category_id = :category_id AND E.publisher_id= :publisher_id")
                .setParameter("category_id",category_id)
                .setParameter("publisher_id",publsiher_id)
                .list();

    }

在您的searchResult.jsp中,您正在listItems2上进行迭代,但是您在控制器中添加的属性为items

更改

 <c:forEach var="items" items="${listItems2}">

 <c:forEach var="items" items="${items}">

另一方面,请正确命名实体。实体名称应为Item,集合名称应为Items。但是稍后再做,首先尝试解决当前问题。  

,

最后是一个简单的语法问题。 @saifulislamplabon回答修复了我的Hibernate部分,并出现了错误-“ java.lang.NumberFormatException对于输入字符串:” ISBN“是由于我的JSP页面带有<c:forEach标记的错误引起的。这是由{{ 1}}。我将其更正为<% @page,现在一切正常,谢谢支持。

本文链接:https://www.f2er.com/3161957.html

大家都在问