因为hibernate保存了对应表的当前最大键值,每保存一次,都是直接取当前最大值,然后加1作为将要保存对象的主键值。
所以像你这种多个线程并发访问时,会取到同一个最大键值,然后加1保存,这就导致了报主键重复异常了。