gpt4 book ai didi

java - 使用 @TableGenerator 的 JPA id 生成表的动态值

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

我有一个基于 Spring 的应用程序,它使用 JPA 2.1 作为持久层。我使用 @TableGenerator 和 @GenerateValue 注释来处理主键 ID 生成。

这些是注释:

@TableGenerator(name = "user_gen", table = "id_gen", pkColumnName = "gen_name", valueColumnName = "gen_val", allocationSize = 1) 

@GeneratedValue(strategy = GenerationType.TABLE, generator = "user_gen")

我使用此实体在我的用户表中插入记录。一切都运转良好。现在我有一个新问题。外部应用程序需要在我的用户表中插入记录。这会导致我的主键违规。

JPA 中是否有任何选项可以使我的 id_gen 表的 gen_val 值根据我的用户表的最大 id 进行更新?

[我在研究中找不到这样的解决方案]

也欢迎提出解决该问题的其他想法。

最佳答案

您可以使其与自定义 id 生成器一起使用,在每次插入之前您将检查最大 id,但我不推荐它。在我看来,这最好在数据库级别处理。

该应用程序如何生成 ID?他们必须从某个地方获取它,所以为什么不在该步骤中处理 id 呢?最好的选择是它可以使用相同的 id_gen 机制来实现这一点。几个想法:

  • 插入数据后,他们只需调用您的存储过程即可同步 ID
  • 他们可以在插入之前调用您的存储过程,这将返回新行的 ID
  • 他们可以调用您的存储过程来插入数据,而不是直接插入数据,并且您将处理 ID

关于java - 使用 @TableGenerator 的 JPA id 生成表的动态值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29671162/

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