在使用jpa操作数据库时,发现新对象无法被save,出现以下两种情况:
一、未set自增主键id的值,只set了对象的其他属性,以为save时会自动配置主键。(实际上数据库确实会帮助我们配置自增主键,前提是数据库创建时要指定主键为自增,问题便是出在这里。)
二、set自增主键的值,写了一个获取数据库当前操作表中最大id的方法,将这个最大id+1设置到新对象上并保存,jpa会提示detached entity passed to persist的错误,大概意思是jpa设置了自增属性,但我们手动设置的id与自增操作冲突了,相当于同时要保存两条数据,当然会被制止,这种情况可以将jpa实体类中@GeneratedValue(strategy = GenerationType.IDENTITY)注解去掉以解决问题。
两种问题都得到了解决。