在我的系统中人员和用户是一对一的关系,用户表中存在一个外键关联着人员的主键,同时用户又关联着审批历史等信息。当删除人员时,为了保留员工的历史信息,这个人员不是真正的从数据库中删除,而是修改人员的一个属性,让它不可见,同时设置用户的失效时间为当前时间。当删除用户时,设置用户失效时间为当前时间,同时外键置空。在外键置空操作时会报错:
Hibernate: update t_user set username=?, password=?, createTime=?, expireTime=?, person_id=? where id=?
08:54:57,156 WARN JDBCExceptionReporter:77 - SQL Error: 0, SQLState: 22001
08:54:57,156 ERROR JDBCExceptionReporter:78 - Data truncation: Column set to default value; NULL supplied to NOT NULL column 'person_id' at row 1
08:54:57,171 ERROR AbstractFlushingEventListener:301 - Could not synchronize database state with session为什么人员不能置空?我应该如何修改?
Hibernate: update t_user set username=?, password=?, createTime=?, expireTime=?, person_id=? where id=?
08:54:57,156 WARN JDBCExceptionReporter:77 - SQL Error: 0, SQLState: 22001
08:54:57,156 ERROR JDBCExceptionReporter:78 - Data truncation: Column set to default value; NULL supplied to NOT NULL column 'person_id' at row 1
08:54:57,171 ERROR AbstractFlushingEventListener:301 - Could not synchronize database state with session为什么人员不能置空?我应该如何修改?
Column set to default value; NULL supplied to NOT NULL column 'person_id' at row 1 'person_id' 这个字段不能为空,这是你数据库设置的,但是你在修改的是orm对象的这个字段肯定是空的,你debug一下就清楚了,person表对象的id属性一定是null的
设置可以为空就可以了