Spring boot 春季JPA+;启动+;序列生成器始终为0

Spring boot 春季JPA+;启动+;序列生成器始终为0,spring-boot,jpa,oracle11g,spring-data-jpa,Spring Boot,Jpa,Oracle11g,Spring Data Jpa,以下代码仅呈现0的ID @Id @GeneratedValue(strategy=GenerationType.AUTO, generator="PROJECT_SEQ_GEN") @SequenceGenerator(name="PROJECT_SEQ_GEN", sequenceName="X.X_PROJECT_SEQ", allocationSize=1) private long projectId; 我尝试了SEQUENCE和AUTO,但结果都一样x_project\u seq.n

以下代码仅呈现0的ID

@Id
@GeneratedValue(strategy=GenerationType.AUTO, generator="PROJECT_SEQ_GEN")
@SequenceGenerator(name="PROJECT_SEQ_GEN", sequenceName="X.X_PROJECT_SEQ", allocationSize=1)
private long projectId;
我尝试了
SEQUENCE
AUTO
,但结果都一样
x_project\u seq.nextval
在我的Oracle数据库中运行良好。我想继续使用数据库中已经定义的序列

根据Spring的入门指南-

“客户的`id属性用@id注释,以便JPA将其识别为对象的id。id属性也用@GeneratedValue注释,以指示应自动生成id。”

从他们的示例来看,他们所做的一切似乎都是创建新客户,ID是自动生成的。我错过了什么

您的实现使用了错误的。更新策略声明以使用
strategy=GenerationType.SEQUENCE
,只需对
sequenceName
值使用
PROJECT\u SEQ\u GEN

@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="PROJECT_SEQ_GEN")
@SequenceGenerator(name="PROJECT_SEQ_GEN", sequenceName="PROJECT_SEQ_GEN", allocationSize=1)
private long projectId;

花了我整个上午,但我终于解决了这个问题

我使用Hibernate工具自动生成POJO,所有注释都放在方法级别,但是Spring建议(需要?)将它们放在字段级别。您也不能只将Id注释移动到字段级别,因为它是一个或另一个。所以我按照答案定制Hibernate工具,以生成带有注释的POJO,所有这些都在字段级别


现在一切都好了

你的
strategy=GenerationType.AUTO
应该是
strategy=GenerationType.SEQUENCE
我在帖子中写道,我已经尝试了这两种方法(基于我在其他帖子中读到的一些答案)