@Id
@Column(name = "`wid`")
private String id;
把上面加了自动生成uuid,变为下面
@Id
@Column(name = "`wid`")
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2") //项目变更需要
private String id;
原设想是新建了该对象,将其存进数据库,有系统来生成它的uuid,不用我关心。
引发了整个项目关于该实体类的错误。之后被纠正为在新建该对象的时候手动添加uuid。方法如下:
SubProject subProject=new SubProject(UUID.randomUUID().toString());
这是因为如果主键id是自动生成的uuid, 原数据的id不可以set进一个新new出来的对象 ,再update, 这样做会报错 。
参考 hibernate自动生成uuid策略下手动setId进行update报错 ,得到原因如下:
hibernate中对象有四种状态
- 瞬时状态