gpt4 book ai didi

java - 强制 hibernate 将 id 留空

转载 作者:行者123 更新时间:2023-11-29 13:52:55 31 4
gpt4 key购买 nike

所以我正在使用 Postgres 和 Hibernate 4.2.2 以及这样的实体

@Entity(name = "Users")
@Check(constraints = "email ~* '^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+[.][A-Za-z]+$'")
@DynamicInsert
public class Users {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id_user",unique = true)
@Index(name = "user_pk")
private Integer idUser;

Hibernate 仍然会插入一些已经在表中的 id,而不是将其留空以供数据库填充。此外,hibernate 会根据其缓存强制 id,甚至不检查数据库是否具有最新 id。

我怎样才能强制它,以便我可以将 id 留空并让数据库插入它?

首先我认为这是因为我正在使用 int 并且 int 默认为 0 但即使在使用 object 时它也只是强制从其缓存中获取 id。

所以我的目标是让数据库填充 id 而不是 hibernate 或至少是 Hibernate 在填充之前首先检查数据库的 id。

最佳答案

所以我得到的错误是
Caused by: org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "users_pkey"Detail: Key (id_user)=(1) already存在。
这不是由 Hibernate 和缓存引起的,而是由创建数据库时导入数据引起的,我在其中插入了给定的 ID,例如:
INSERT INTO users(id_user,email,password,tag) VALUES (1 ,'a@b.c','***','Adpleydu');
并且生成的顺序没有更新,所以如果我通过控制台插入纯 SQL,我会得到同样的错误。

关于java - 强制 hibernate 将 id 留空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37501995/

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