【发布时间】:2019-08-15 09:19:53
【问题描述】:
我处于一个奇怪的位置,我需要将@Id 的@Entity 保存为null
整个项目是使用休眠和实体构建的。但是对于这个遗留实体,表本身有一个触发器来生成 ID。
因此,尝试插入除 null 之外的任何内容都会导致错误。
当尝试.save() 具有空 id 的实体时,休眠将抛出
org.springframework.orm.jpa.JpaSystemException: ids for this class must be manually assigned before calling save()
编辑:
澄清,我需要做.save(),其中 ID 列为空,因为:
表中的触发器将(在任何插入之前)检查 ID 是否为空,然后执行 SELECT 以获取最后一个 ID 并将其增加 1,最后将这个新行插入到表中。如果 ID 不为 null,则触发器将出错。
【问题讨论】:
-
触发器或序列或身份?
-
不确定我是否理解。表有触发器,它将选择最后一个 id,然后执行 id+1 并插入它。我尝试了不同的 GenerationType 策略,但似乎都不起作用。没有定序器。