Clo*_*mez 5 java null hibernate jpa
我处于一个奇怪的位置,我需要保存@Id
一个@Entity
asnull
整个项目是使用休眠和实体构建的。但是对于这个遗留实体,表本身有一个触发器来生成 ID。
因此,尝试插入除 null 之外的任何内容都会导致错误。
当尝试.save()
使用 null id 的实体时,hibernate 会抛出
org.springframework.orm.jpa.JpaSystemException: ids for this class must be manually assigned before calling save()
Run Code Online (Sandbox Code Playgroud)
编辑:
澄清一下,我需要.save()
在 ID 列为空的地方做,因为:
表中的触发器将(在任何插入之前)检查 ID 是否为空,然后执行 SELECT 以获取最后一个 ID 并将其增加 1,最后将此新行插入到表中。如果 ID 不为空,触发器将出错。
只需将 id 标记为由底层数据库自动生成即可:
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
Run Code Online (Sandbox Code Playgroud)
GenerationType.IDENTITY
通常是为 PK 设置为的情况而设计的auto increment
,但是从 JPA 的角度来看,它只是将生成 id 的职责移交给了数据库引擎。在你的情况下,通过使用触发器就会发生这种情况。
归档时间: |
|
查看次数: |
1654 次 |
最近记录: |