gpt4 book ai didi

java - 具有主 ID 和修订 ID 的 Hibernate 实体

转载 作者:行者123 更新时间:2023-11-29 22:11:18 25 4
gpt4 key购买 nike

我有一个资源需要通过静态服务公开。我希望它对资源有多个修订版(每次更新时)。我有 id(资源 id)和 subid(修订 id)

id 1 subid 0 
id 1 subid 1
id 1 subid 2
id 2 subid 0

post here中我尝试使用自动增量资源 id 和子 id(在每次更新时以编程方式增量)表

 CREATE TABLE `SomeEntity` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`subid` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`,`subid`),

实体

private long id;
private int subid;

@Id
@Column(name = "id")
public long getId() {
return id;
}

@Id
@Column(name = "subid")
public int getSubid() {
return subid;
}

正如链接帖子中的回答,一个可用的解决方案是有一个额外的 id 和 subid 列串联,它允许在创建时获取分配的 id。

是否有任何关于编写自定义 SelectGenerator 以实现增量 id 和 subid 目的的信息?

如果我放弃 id 的自动增量。实现此目标的更好方法是什么?

最佳答案

我认为你需要进行一些修改来支持这种情况,因为 mysql(也不 JPA)支持这种情况,

黑客如下:您需要一个仅包含自动增量列的表,并将其映射到一个实体(我们称之为 SomeEntityIdGenerator)。该实体将为您提供 SomeEntityid 字段。

然后,您需要从 SomeEntity 更改组合键,以便与 SomeEntityIdGenerator 建立 ManyToOne 关系。

我并不是说这很漂亮(因为它非常难看),但我认为这是使用普通 JAP/SQL 实现此目的的唯一方法。可能有使用触发器的替代方案,但您仍然需要额外的表才能作为序列

关于java - 具有主 ID 和修订 ID 的 Hibernate 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31639487/

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