gpt4 book ai didi

java - jpa pagingandsortingrepository save 跳过自动生成的值 1

转载 作者:行者123 更新时间:2023-12-02 02:39:24 25 4
gpt4 key购买 nike

我正在使用 SPRING DATA JPA PagingAndSortingRepository 对 ORACLE 表执行 CRUD 操作。该示例有一个自动生成的 ID 字段。当我执行 myrepo.save() 时,发布的值可以正常保存,但我注意到 Id 字段增加了 2。例如,

  1. 例如,我进行了保存,自动生成 ID 最终为 64
  2. 然后我进行第二次保存,ID 值将为 66
  3. 然后我进行第二次保存,ID 值将为 68

等等。我尝试添加allocationSize,如

@SequenceGenerator(name="seq", initialValue=1, allocationSize=1)

但这并没有帮助。我仍然看到 id 增加了 2。

保存请求返回一个对象。因此,当我在 postman 中调试问题时,返回的对象似乎将 Id 加了 1,但最终在 DB 表中的是 postman 显示的值加 1。

如果以前见过这种奇怪的行为,请告知。

感谢您的帮助

最佳答案

将策略放置在 ID 中就足够了。如果不设置,默认为 AUTO,AUTO 会将责任交给使用一种全局增量策略的数据库。

    @Id
@GeneratedValue(strategy= GenerationType.TABLE)
private Long id;

这是 javadoc:

Open Declaration javax.persistence.GenerationType.TABLE

Indicates that the persistence provider must assign primary keys for the entity using an underlying database table to ensure uniqueness.

javax.persistence.GenerationType.AUTO

Indicates that the persistence provider should pick an appropriate strategy for the particular database. The AUTO generation strategy may expect a database resource to exist, or it may attempt to create one. A vendor may provide documentation on how to create such resources in the event that it does not support schema generation or cannot create the schema resource at runtime.

希望有帮助

关于java - jpa pagingandsortingrepository save 跳过自动生成的值 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45732296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com