Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JPA存储库在保存后检索自定义主键值_Jpa_Spring Data Jpa - Fatal编程技术网

JPA存储库在保存后检索自定义主键值

JPA存储库在保存后检索自定义主键值,jpa,spring-data-jpa,Jpa,Spring Data Jpa,我有一个实体类指向postgresql表。以下是表格结构。paymentreferencenumber是由触发器填充的主键。id字段是序列生成的字段。当我尝试使用JPARepository保存方法保存到此表时,它会插入第一条记录。但在这之后,由于主键约束,它失败了。因为PK是一种字符串类型,并且是使用触发器生成的,所以我将生成器策略指定为“选择”。有谁能帮我对付这个拦截器,给我指出正确的方向吗。谢谢 表结构-- 如果未指定id生成策略,Hibernate将使用GenerationType.AUT

我有一个实体类指向postgresql表。以下是表格结构。paymentreferencenumber是由触发器填充的主键。id字段是序列生成的字段。当我尝试使用JPARepository保存方法保存到此表时,它会插入第一条记录。但在这之后,由于主键约束,它失败了。因为PK是一种字符串类型,并且是使用触发器生成的,所以我将生成器策略指定为“选择”。有谁能帮我对付这个拦截器,给我指出正确的方向吗。谢谢

表结构--


如果未指定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;