JPA存储库在保存后检索自定义主键值
我有一个实体类指向postgresql表。以下是表格结构。paymentreferencenumber是由触发器填充的主键。id字段是序列生成的字段。当我尝试使用JPARepository保存方法保存到此表时,它会插入第一条记录。但在这之后,由于主键约束,它失败了。因为PK是一种字符串类型,并且是使用触发器生成的,所以我将生成器策略指定为“选择”。有谁能帮我对付这个拦截器,给我指出正确的方向吗。谢谢 表结构--JPA存储库在保存后检索自定义主键值,jpa,spring-data-jpa,Jpa,Spring Data Jpa,我有一个实体类指向postgresql表。以下是表格结构。paymentreferencenumber是由触发器填充的主键。id字段是序列生成的字段。当我尝试使用JPARepository保存方法保存到此表时,它会插入第一条记录。但在这之后,由于主键约束,它失败了。因为PK是一种字符串类型,并且是使用触发器生成的,所以我将生成器策略指定为“选择”。有谁能帮我对付这个拦截器,给我指出正确的方向吗。谢谢 表结构-- 如果未指定id生成策略,Hibernate将使用GenerationType.AUT
如果未指定id生成策略,Hibernate将使用
GenerationType.AUTO
。这将导致以下任何情况:
自动-标识列、序列或表取决于
底层数据库
如果您查看,您会注意到所有这些生成ID的类型都是long
、short
或int
,而不是String
类型
假设您想要一个String
UUID作为id,您可以使用
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
@Column(name = "paymentreferencenumber")
private String refNum;
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
@Column(name = "paymentreferencenumber")
private String refNum;