使用上个问题的回答中的代码,报错Cause: java.sql.SQLException: Field 'position_id' doesn't have a default value ; Field 'position_id' doesn't have a default value; nested exception is java.sql.SQLException: Field 'position_id' doesn't have a default value,position_id字段设置了NOT NULL约束,这是为什么
时间: 2023-10-21 09:17:49 浏览: 148
解决IDEA错误 Cause: java.sql.SQLException: The server time zone value的问题
这个错误提示是由于执行插入操作时,Advert对象中的position属性没有被正确映射到对应的数据库字段上,导致数据库中的position_id字段没有被正确赋值。因为position_id字段设置了NOT NULL约束,所以插入操作失败。
可以尝试检查一下Advert对象中的position属性是否被正确赋值,以及Advert和AdPosition之间的关联关系是否正确建立。如果AdPosition对象不存在,需要先进行插入或者查询操作,将对应的记录插入到数据库中或者查询出对应的记录,然后再将其赋值给Advert对象的position属性。
另外,可以尝试在AdvertMapper接口中定义一个自定义的insert方法,并使用@Insert注解指定对应的SQL语句。如下所示:
```java
@Insert("insert into advert (name, position_id, media_id) values (#{name}, #{position.id}, #{media.id})")
int insert(Advert advert);
```
在调用insert方法时,需要确保Advert对象中的position和media属性都已经正确赋值。
阅读全文