提问人:יהונתן בן דוד 提问时间:8/25/2020 最后编辑:Mark Rotteveelיהונתן בן דוד 更新时间:8/26/2020 访问量:135
如何生成考虑已删除实体的序列 [duplicate]
How to generate a sequence considering deleted entities [duplicate]
问:
假设我有一个简单的休眠实体,就像这样
@Entity
public class SomeEntity {
@Id
private long id;
// Other fields...
}
我想为 id 列生成序列,同时考虑任何已删除的实体。这意味着我不希望为保存到数据库的每个新实体增加序列,而是重用分配给已删除实体的值。 例如,在数据库中,我保存了这些实体
|---------------------|
| ID |
|---------------------|
| 1 |
|---------------------|
| 2 |
|---------------------|
因此,下一个实体 id 应获取值 3。但是,如果删除了 id 为“1”的实体,下次我将实体保存到数据库时,我希望其 id 为 '1'
如何使用 Hibernate 实现此行为?
答:
0赞
JLazar0
8/25/2020
#1
最后,数据库序列不能以这种方式工作。您必须实现数据库查询以获取最小可用 ID 并手动设置实体 ID。
评论
2赞
Mark Rotteveel
8/26/2020
这样做会导致各种令人讨厌的并发问题,这正是序列不这样做的原因。
0赞
יהונתן בן דוד
8/26/2020
谢谢。我还阅读了 Alex Rudenko 建议的答案,基本上说它也可能导致性能问题
评论