java date赋空值_java – 无法将null值赋给基本类型错误(Spring / Hibernate)

我的数据库中有3个表 – Booking,Restaurant和RestaurantTable.现在我正在尝试创建一个新的预订,其中一个步骤就是添加一个表格.当我尝试添加此表时,出现以下错误:

org.springframework.core.convert.ConversionFailedException: Failed to convert from type java.lang.String to type @javax.persistence.Column int for value 'null'; nested exception is java.lang.IllegalArgumentException: A null value cannot be assigned to a primitive type

我不知道它为什么会出现这个错误,因为我试图添加的表不是null(至少我认为).希望你明白我的意思.

我在数据库中的预订表:

CREATE TABLE `booking` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`R_id` int(11) NOT NULL,

`date` date not null,

`start` TEXT,

`duration` float(3,1),

`amount_of_people` int,

`name` TEXT,

`contact_preference` TEXT,

`phone_number` TEXT,

`comments` TEXT,

`current_datetime` datetime default current_timestamp,

`new_date` datetime default current_timestamp,

`deleted` bool default false,

`edited` bool default false,

`table_number` int,

PRIMARY KEY (`id`),

FOREIGN KEY (`R_id`) references `restaurant`(`id`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

/*!40101 SET character_set_client = @saved_cs_client */;

我在数据库中的RestaurantTable:

CREATE TABLE `restaurant_table` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`table_size` int,

`table_number` int,

`restaurant_id` int(11),

PRIMARY KEY (`id`),

FOREIGN KEY (`restaurant_id`) references `restaurant`(`id`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

/*!40101 SET character_set_client = @saved_cs_client */;

我想要添加到预订的表的.jsp文件:

Create new booking

Choose a table*:

BookingController.java中的相关方法:

@RequestMapping(value = "booking/create/{id}", method = RequestMethod.GET)

public String chooseTable(@PathVariable Long id, Model model) {

Booking booking = bookingService.getBooking(id);

Restaurant restaurant = booking.getRestaurant();

Set tableSet = restaurant.getTable();

model.addAttribute("tables", tableSet);

model.addAttribute("booking", booking);

return "chooseTable";

}

@RequestMapping(value = "booking/create/{id}", method = RequestMethod.POST)

public String chooseTableAction(@PathVariable Long id, Model model) {

return "redirect:/bookings";

}

现在预订控制器中的POST方法没有做任何事情,因为它甚至在此之前就给我一个错误.

任何帮助表示赞赏!

解决方法:

您的代码的问题是Booking.java中的tableNumber字段是int类型,但在您的jsp中,您有以下内容.

这基本上意味着select下拉列表中的值可以为null,在这种情况下,Spring无法将null转换为基本类型,因此它会在页面加载本身上抛出此类异常.这个问题有两种可能的解决方案:

1 GT;将值从值=“”更改为使用某个数字(如value =“ – 1”)作为空白选项,并相应地处理应用程序逻辑中的-1.

2 – ;其他选项是将tableNumber字段声明为Integer类型而不是int.

标签:html,java,spring,mysql,hibernate

来源: https://codeday.me/bug/20190724/1525461.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值