gpt4 book ai didi

java - JPA, hibernate 。如何从@TableGenerator 获取下一个值

转载 作者:搜寻专家 更新时间:2023-11-01 03:47:50 25 4
gpt4 key购买 nike

我有一个具有以下主键生成策略的实体类

@Id
@Column(name = "id", nullable = false)
@TableGenerator(name = "USERGENERATOR", table = "my_sequences", pkColumnName = "sequence_name", pkColumnValue = "user_id", valueColumnName = "next_value")
@GeneratedValue(strategy = GenerationType.TABLE, generator = "USERGENERATOR")
protected Integer id;

在我需要使用 native 查询插入新行的新需求出现之前,这一直运行良好。由于实体继承策略 (@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)) 到位,主键列不使用 auto_increment。

我想知道是否有办法使用 EntityManager 向表生成器询问下一个值。

最佳答案

我认为您无法通过任何公共(public) API 访问 @TableGenerator,但使用 native SQL 获取下一个值很容易。只需使用这两个查询:

-- get the current value
select next_value from my_sequences where sequence_name = 'user_id';
-- update value
update my_sequences set next_value = next_value + 1;

如果 @TableGenerator 同时获取下一个值,则存在冲突的风险。

关于java - JPA, hibernate 。如何从@TableGenerator 获取下一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39251174/

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