在我的Spring boot +休眠+ mysql应用程序中,我有自己的UserRepository
:
public interface UserRepository extends JpaRepository<User, Integer> {
我在user
数据库中有一个mysql
表,还有一个对应的实体类。
@Entity
@Table(name = "user")
public class User {
/**
* This field was generated by MyBatis Generator. This field corresponds to the database column user.id
* @mbg.generated Mon Sep 28 14:41:58 CST 2020
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id",length=32) //
private Integer id;
/**
* This field was generated by MyBatis Generator. This field corresponds to the database column user.ori_id
* @mbg.generated Mon Sep 28 14:41:58 CST 2020
*/
@Column(name="ori_id",length=32) //
private Integer oriId;
/**
* This field was generated by MyBatis Generator. This field corresponds to the database column user.user_name
* @mbg.generated Mon Sep 28 14:41:58 CST 2020
*/
@Size(min = 3, max = 18, message = "Minimum user name length: 3 characters")
@Column(name="user_name",unique = true, nullable = false)
private String userName;
findAll
方法可以正常工作,但是当我创建一个User对象并调用save
方法时:
List<User> list=userRepository.findAll();
userRepository.deleteAll();
User admin = new User();
admin.setUserName("admin");
admin.setPassword("admin");
admin.setEmail("admin@email.com");
admin.setCreateTime(new Date());
admin.setRole(Role.ROLE_ADMIN.name());
userRepository.save(admin);
生成的hql是:
Hibernate:
insert
into
user
(create_ime, email, last_user_ime, last_password_change, mobile, ori_id, password, real_name, role, role_id, status, user_count, user_name, user_ime)
values
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
看来save
方法正在保存具有所有字段null
的对象,但出现错误:
2020-09-30 10:24:24.657 WARN 15956 --- [ restartedMain] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 1364, SQLState: HY000
2020-09-30 10:24:24.662 ERROR 15956 --- [ restartedMain] o.h.engine.jdbc.spi.SqlExceptionHelper : Field 'create_time' doesn't have a default value
我该如何解决?
答案 0 :(得分:2)
(?,?,?,...)在休眠日志中是正常的,没有记录实际的参数值,并不意味着插入的值为空。
请注意,查询正在插入字段“ create_ime”,并且错误显示不接受空值的列为“ create_time”,因此表中似乎有两列,可能是由于拼写错误或重命名所致。