开发一个新的JavaSpringMVC微服务我遇到了一个小问题。当我为任何实体发送创建请求时,生成的id总是跟在前一个之后。
我的事件实体id配置
我的用户实体id配置
例如,这是我从这两个请求中得到的
用户创建请求(可以看到id值为1)
事件创建请求(可以看到id值为2)
创建的事件id是最后创建的用户id+1,这显然是我不希望发生的。我希望每个实体都有单独的id值。我想知道我做错了什么。谢谢您
开发一个新的JavaSpringMVC微服务我遇到了一个小问题。当我为任何实体发送创建请求时,生成的id总是跟在前一个之后。
我的事件实体id配置
我的用户实体id配置
例如,这是我从这两个请求中得到的
用户创建请求(可以看到id值为1)
事件创建请求(可以看到id值为2)
创建的事件id是最后创建的用户id+1,这显然是我不希望发生的。我希望每个实体都有单独的id值。我想知道我做错了什么。谢谢您
2条答案
按热度按时间6gpjuf901#
您正在使用
@GeneratedValue
没有提供策略。因此它使用
AUTO
默认策略,它指示持久性提供程序应该为特定数据库选择适当的策略。由于两个id列共享相同的名称,我假设两个实体共享一个和同一个生成器。
结果是
创建id=1的事件实体作为生成器在一个
创建id=1+1的用户实体作为请求的新生成值
您应该考虑使用不同的序列为每个实体生成单独的id。
下面使用db序列来生成id
例如,如果我不在注解hibernate中指定具体的生成器,我将创建一个名为
hibernate_sequence
然后用于所有使用@GeneratedValue
不指定生成器。这将导致所有表/实体的值递增。rdrgkggo2#
您的解决方案工作人员非常出色;)我最后使用了它并添加了@sequencegenerator注解来初始化0处的计数。
非常感谢丹尼尔,你真好。