这是我的部分映射文件:
bean:
public class Users {
private int sid;
private String sname;
private String gender;
省略get and set 方法
public Users(int sid, String sname, String gender) {
this.sid = sid;
this.sname = sname;
this.gender = gender;
}
@Override
public String toString() {
return "Users{" +
"sid=" + sid +
", sname='" + sname + '\'' +
", gender='" + gender + '\'' +
'}';
}
以下是测试的方法:
@Test
public void insert(){//插入函数
Users u=new Users();
u.setSid(1501);
u.setSname("dell");
u.setGender("male");
session.save(u);
}
下面是终端报错及tostring()打印的内容:
Hibernate:
insert
into
students
(sname, gender)
values
(?, ?)
ERROR: Field 'sid' doesn't have a default value (注释:sid是我定义的主键)
问题来了,我把主键生成策略改成increment的时候,主键自动从1开始,而不是我设置的1501,当我把主键生成策略改成native的时候,就会报错主键不存在,前面我明明给主键赋值了sid=1501,可是为什么还是显示主键不存在???
更多
分享到:
你把表删除在重新创建
或者修改hibernate.hbm2dd.auto=create