Java SQLException:字段不为';没有默认值
我有一个具有以下属性的技能实体Java SQLException:字段不为';没有默认值,java,mysql,spring-boot,save,auto-increment,Java,Mysql,Spring Boot,Save,Auto Increment,我有一个具有以下属性的技能实体 @Id @GeneratedValue (strategy=GenerationType.IDENTITY) @Column(name = "idskill", nullable = false) private int idskill; private String skillName; 我希望在创建新条目时为Id分配一个随机值,最好是自动递增的。 然后,我尝试将一个新条目保存到方法中的mysql数据库中 Optional&
@Id
@GeneratedValue (strategy=GenerationType.IDENTITY)
@Column(name = "idskill", nullable = false)
private int idskill;
private String skillName;
我希望在创建新条目时为Id分配一个随机值,最好是自动递增的。
然后,我尝试将一个新条目保存到方法中的mysql数据库中
Optional<Skill> skill=skillRepository.findByskillName(skillName);
int id=0;
if(skill.isPresent()) {
id=Integer.valueOf(skill.get().getIdSkill());
}
else {
Skill newSkill = new Skill();
newSkill.setSkillName(skillName);
skillRepository.save(newSkill);
}
有人知道为什么会这样吗?如果不需要,我不想从sql workbench更改我的数据库。我想知道我是否缺少一个默认值属性,但我似乎无法联机找到任何内容问题是您将列指定为不可为空,因此如果id字段未显式填充,hibernate将拒绝您的操作 按如下所示进行更改可以解决此问题。GenerationType.AUTO将让数据库负责id的生成
@Id
@GeneratedValue (strategy=GenerationType.AUTO)
@Column(name = "idskill")
private int idskill;
我已经实现了这个,但是我现在收到了这个错误;java.sql.SQLIntegrityConstraintViolationException:键“PRIMARY”的重复条目“2”。我在表中已经有一些条目,但我希望它能够在任何时候添加它们,而不考虑已经存在的条目。如果是这样,只需检查最高id并遵循接受的答案,是否无法将其设置为从表中的最高值自动递增?这个方法似乎添加了很多不必要的查询ALTER TABLE的复杂性是什么?您的表自动增量=您的值?这回答了你的问题吗?
@Id
@GeneratedValue (strategy=GenerationType.AUTO)
@Column(name = "idskill")
private int idskill;