spring mvc实体id(生成值)独立计数器

pw9qyyiw  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(242)

开发一个新的JavaSpringMVC微服务我遇到了一个小问题。当我为任何实体发送创建请求时,生成的id总是跟在前一个之后。
我的事件实体id配置
我的用户实体id配置
例如,这是我从这两个请求中得到的
用户创建请求(可以看到id值为1)
事件创建请求(可以看到id值为2)
创建的事件id是最后创建的用户id+1,这显然是我不希望发生的。我希望每个实体都有单独的id值。我想知道我做错了什么。谢谢您

6gpjuf90

6gpjuf901#

您正在使用 @GeneratedValue 没有提供策略。
因此它使用 AUTO 默认策略,它指示持久性提供程序应该为特定数据库选择适当的策略。
由于两个id列共享相同的名称,我假设两个实体共享一个和同一个生成器。
结果是
创建id=1的事件实体作为生成器在一个
创建id=1+1的用户实体作为请求的新生成值
您应该考虑使用不同的序列为每个实体生成单独的id。
下面使用db序列来生成id

@Id
@GeneratedValue(generator = "my_entity_name_seq")
private long id;

例如,如果我不在注解hibernate中指定具体的生成器,我将创建一个名为 hibernate_sequence 然后用于所有使用 @GeneratedValue 不指定生成器。这将导致所有表/实体的值递增。

rdrgkggo

rdrgkggo2#

您的解决方案工作人员非常出色;)我最后使用了它并添加了@sequencegenerator注解来初始化0处的计数。

@SequenceGenerator(name = "seq", initialValue = 0)
public class ClassName {

  @Id
  @GeneratedValue(generator = "seq")
  private Integer id;

}

非常感谢丹尼尔,你真好。

相关问题