当前位置: 首页 > 知识库问答 >
问题:

Spring@GeneratedValue注释对自动增量字段不起作用

蓬野
2023-03-14
CREATE TABLE IF NOT EXISTS `ehealthdb`.`timestamp` (
  `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '',
  `login_date` DATETIME NULL COMMENT '',
  `logout_date` DATETIME NULL COMMENT '',
  `create_date` DATETIME NOT NULL COMMENT '',
  `update_date` DATETIME NULL COMMENT '',
  `isActive` TINYINT(1) NULL COMMENT '',
  PRIMARY KEY (`id`)  COMMENT '')
ENGINE = InnoDB;

当我尝试使用生成的post URL和以下json负载来使用save时:

{
 "loginDate":"1374839856000",
 "logoutDate":"1374839856000",
 "createDate":"1374839856000",
 "updateDate":"1374839856000",
 "isActive":true
}

请求处理失败;嵌套异常是javax.persistence.persistenceException:org.hibernate.id.IdentifierGenerationException:在调用save():eHealth.domain.timestamp之前必须手动分配该类的ID

我认为这是由于缺少@GeneratedValue造成的,而scaffolding没有在我的主键上创建它。我必须手动添加它,如下所示:

但还是不行。它仍然是错误的。

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY) //add this 
@Column(name = "id", unique = true, nullable = false)
@Basic(fetch = FetchType.EAGER)

@XmlElement
Integer id;

共有1个答案

张姚石
2023-03-14

根本不要尝试设置ID字段。它是自动处理的。

使用@GeneratedValue(Srategy=GenerationType.Identity)。确保persistence.xml具有

<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />

应该使用Hibnerate版本4或5。

此外,我从未在ID列上看到fetchtype。把这个拿掉。

@Basic(fetch = FetchType.EAGER)

我这样做:

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;

此外,可能应该了解完整的设置。什么版本的Spring?

 类似资料:
  • 问题内容: 如何使用注释设置自动递增ID的起始值? 我希望它从250000开始 问题答案: /* * @ORM\Id * @ORM\GeneratedValue(strategy=”SEQUENCE”) * @ORM\SequenceGenerator(sequenceName=”id”, initialValue=250000) * @ORM\Column(type=”integer”) / p

  • 我在应用程序中配置了Spring cloud sleuth(以及zipkin)。我有一个控制器,它调用服务,然后调用存储库,最后调用数据库。 设置工作正常,Sleuth正在生成spans id,它在zipkin中也可见。我想尝试跨多个内部bean和方法创建spans。我遇到了使用注释管理跨度。这似乎不起作用。 当我使用这里提到的任何注释时,如NewSpan或ContinueSpan,自动连接停止工

  • 我有一个名为的下拉字段,其中包含电话、电子邮件等值,还有一个名为的输入字段。如果选择了下拉值,我想验证输入字段的有效电子邮件地址。。。 我试图创建一个自定义约束,将验证字段对电子邮件正则表达式,如果字段将具有值 我有以下自定义约束的代码 验证器就像 问题是它没有在表单上触发...我使用模型对话框,其中要验证的bean被呈现 参考:使用Hibernate验证器进行跨域验证(JSR 303) 期待您的

  • 我有一个简单的类叫BeaconDao 然而,当我用@service或@component标记beaconDao时,一切都运行得非常好。有人能看出问题所在吗?

  • 我尝试使用SmtpAuthenticator创建邮件服务。组件已正确启动,但用户名和密码字段中存在空值。为什么会这样?