图上有两张表:EPMS_PRECAUTION_PLAN_ACTION和IDENTITY_GENERATOR,EPMS_PRECAUTION_PLAN_ACTION的ID是通过IDENTITY_GENERATOR获取的。
程序方面:当通过前台页面对EPMS_PRECAUTION_PLAN_ACTION增加时,就会触发spring,因为 IDENTITY_GENERATOR表是交由spring来管理的,这是先会从IDENTITY_GENERATOR表中取出数据来实现 EPMS_PRECAUTION_PLAN_ACTION表中的ID增加,同时使IDENTITY_GENERATOR的数据增加,以此类推,但目前遇到 一个问题,为什么有的时候,IDENTITY_GENERATOR表中的数据为初始值1,这时,再通过前台页面对 EPMS_PRECAUTION_PLAN_ACTION增加时,由于表中的最大ID数值大于1,所以,后台会出现主键唯一约束的问题,同时增加失败。只 有把IDENTITY_GENERATOR中的数据手动改为EPMS_PRECAUTION_PLAN_ACTION表最大ID加1的值时,才正确了。
问题是:只有图中“@TableGenerator(name = "idGenerator", table = "IDENTITY_GENERATOR", pkColumnName = "ENTITY_TYPE"这行代码操作了IDENTITY_GENERATOR表,而IDENTITY_GENERATOR表又是交给spring托管 的的,那什么情况会造成IDENTITY_GENERATOR表的数据为1呢,有没有优化的办法?只写文字有点乱,还请各位担待,如果是使用过这种方式来 实现表的主键自增的大侠们就会明白我的意思,坐等回答
还可以访问这个地址来回答:http://www.oschina.net/question/569785_83957