gpt4 book ai didi

java - hibernate 在保存对象时更改 id

转载 作者:行者123 更新时间:2023-11-30 10:27:53 25 4
gpt4 key购买 nike

我有一个带有这个参数的对象

{
"id" : "36461dd3-2bdb-42de-8e3d-b44e28696b1e",
"race" : "HUMAN",
"age" : "18",
"name" : "Alisa"
}

我试图保存它

List<MainFemaleCharacter> batch = Arrays.asList(sampleMainCharacter());
try (Session session = sessionFactory.openSession()) {
session.beginTransaction();
batch.forEach(session::save);
session.getTransaction().commit();
}

在调试中,在保存之前,它会显示具有预期值的 id。但是当我检索对象时,它会显示另一个 ID,例如 dccaf5d0-5c2b-4336-a0f3-ff65f92bf5f1。为什么? MainFemaleCharacter 类如下所示

@Entity
@Table(name="main_female_character")
@EqualsAndHashCode(callSuper=true)
@ToString(callSuper=true)
public @Data class MainFemaleCharacter extends BasicCharacter {
}

@MappedSuperclass
@EqualsAndHashCode(callSuper=true)
@ToString(callSuper=true)
public @Data class BasicCharacter extends UidNamedObject {
@OneToOne
private Race race;
private int age;
}

@MappedSuperclass
public @Data class UidNamedObject {
@Id
@GeneratedValue
private UUID id;
@Column(unique=true)
private String name;
}

最佳答案

注解<b>@GeneratedValue</b>会自动生成一个id。它与 <b> @GeneratedValue(strategy=GenerationType.AUTO)</b> 相同注释。

GenerationType.AUTO 表示持久性提供程序选择一种策略,在您的情况下,该策略将在服务器重启后重新启动值。

我建议您考虑使用 <b>GenerationType.SEQUENCE</b> .

关于java - hibernate 在保存对象时更改 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45052558/

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