【发布时间】:2017-12-06 09:28:35
【问题描述】:
在我可以在这里发布问题之前,我已经完成了一系列调查, 我有一个名为“CODE”的实体,我需要保留它,以生成当前使用的主键:
@Id
@SequenceGenerator(name = "CodeSequenceGenerator", sequenceName = "PRO_SEQ", allocationSize = 1)
@GeneratedValue(generator = "CodeSequenceGenerator", strategy = GenerationType.SEQUENCE)
@Column(name = "CODE_ID")
protected Long codeId;
这会导致从指定序列的临时表中选择 ID。我需要的是从特定表中选择的 ID。我有一个 oracle 查询。
select seq(pro_seq, nextval)
from value_table v
where v.value >= 0
LIMIT 1
如何将其写入 HQL 并使用它作为我的实体的主键?
这里seq(pro_seq,nextVal)是oracle函数获取最新的序列值。
我一直在浏览这个问题,并且也使用了@TableGenerator,但也没有用。
请指导!
我没有尝试查询,因为我的数据库不是 MYSQL 我确实尝试了给定的休眠选项,但它不起作用,我什至尝试使用表生成器,如下所示:
@TableGenerator(name = "ModifierSequenceGenerator", table = "CODE_VALUE", valueColumnName = "REFERENCE_SEQ.nextval", pkColumnName = "code_value")
@GeneratedValue(strategy = GenerationType.TABLE, generator = "ModifierSequenceGenerator")
这里还有另外一个属性pkColumnValue,如果没有提到,默认作为实体名。
【问题讨论】: