@GaneratedValue 升级到 springboot 3.2.4 后不支持 not Id 列

问题描述 投票:0回答:1

我正在将 springboot 3.1 升级到 3.2.4,它使用 hibernate 6.4.4.Final。

我在构建 mvn 项目时遇到以下错误 -

创建类路径资源 [/JpaConfiguration.class] 中定义的名称为“entityManagerFactory”的 bean 时出错:属性“column1”被注释为 @GenerateValue,但不是标识符的一部分

实体-

@Id @最小(100000000) @最大(9999999999L) 私有长 id1;

@Column(name = "id2")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id2;

只是想知道在不使用自定义生成器的情况下是否有解决该问题的方法

hibernate hibernate-annotations spring-boot-3
1个回答
0
投票

从 id2 中删除 @GenerateValue:由于 id2 不是您的主键,因此它不应该具有生成的值。您可以简单地从 id2 中删除 @GenerateValue 注释。

@Column(name = "id2")
private Long id2;

更改id2的策略:如果您希望id2具有生成值但不作为主键,则可以使用不同的策略,例如GenerationType.AUTO。然而,这可能并不适合所有场景,并可能导致潜在的独特性问题。

@Column(name = "id2")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id2;

选择最适合您的要求和实体模型语义的选项。

© www.soinside.com 2019 - 2024. All rights reserved.