Field没有与manyToMany Hibernate关系的默认值

时间:2015-09-04 15:23:54

标签: mysql hibernate spring-mvc

在manyToMany关系中,当我尝试从下拉列表中添加一个包含所选车辆的新驱动程序时,它会抛出异常 java.sql.SQLException:字段'vehicle_id'没有默认值

但是,如果我在数据库中设置了一个默认值,它可以通过在(driver_series_stats_xref)表中插入两个不同的行来正常工作,一个用于我要添加的内容,另一个用于我设置的默认值db。

Entity.java

@Column(name="driver_id", unique = true,  nullable=false)
private Long driverId;

@Column(name="first_name")
private String firstName;

@Column(name="last_name")
private String lastName;

 @ManyToMany
@JoinTable(name = "driver_series_stats_xref",
joinColumns = @JoinColumn(name = "driver_id"),
inverseJoinColumns = @JoinColumn(name = "vehicle_id", referencedColumnName ="vehicle_id"))
private List<Vehicle> listOfVehicles = new ArrayList<Vehicle>();
//getter and setter

创建表:

CREATE TABLE `driver_vehicle_xref` (
`driver_id` TINYINT(3) UNSIGNED NOT NULL,
`vehicle_id` SMALLINT(5) UNSIGNED NOT NULL,
`starts_num` SMALLINT(5) UNSIGNED NULL DEFAULT NULL,
PRIMARY KEY (`driver_id`, `vehicle_id`),
INDEX `fk_driver_vehicle_xref_2` (`vehicle_id`),
CONSTRAINT `fk_driver_vehicle_xref_1` FOREIGN KEY (`driver_id`) REFERENCES `driver` (`driver_id`),CONSTRAINT `fk_driver_vehicle_xref_2` FOREIGN KEY (`vehicle_id`) REFERENCES `vehicle` (`vehicle_id`)

driverDao.java

   public Long addorUpdateDriver(final Driver driver) {
    sessionFactory.getCurrentSession().saveOrUpdate(driver);
    return driver.getDriverId();
}

driverService.java

 @Transactional
public Long addToDriver(Driver driver, Vehicle vehicle) {
    vehicle = vehicleDao.getVehicleById(vehicle.getVehicleId());
    driver.getListOfVehicles().add(vehicle);
    Long driverId = driverDao.addorUpdateDriver(driver);
    driver.setDriverId(driverId);
    return driverId;
}

controller.java(post方法)

public String addDriverSubmit(@ModelAttribute Driver driver, Vehicle vehicle, BindingResult result, @RequestParam (value="mode") String mode,
        HttpServletRequest request) {
String vehicleId = request.getParameter("vehicleId");
    request.getAttribute("driverId");
    if("Save".equalsIgnoreCase(mode)) {
        driverService.addToDriver(driver, vehicle);
    } 

错误消息 HTTP状态500 - 请求处理失败;嵌套异常是org.springframework.orm.hibernate4.HibernateJdbcException:Hibernate数据访问的JDBC异常:SQL的SQLException [n / a]; SQL状态[HY000];错误代码[1364];无法执行声明;嵌套异常是org.hibernate.exception.GenericJDBCException:无法执行语句

和 java.sql.SQLException:字段'vehicle_id'没有默认值

0 个答案:

没有答案