我很困惑,因为到处都有人提到用@GenerateValue来搭配@Id.

但是:它可以与非主键属性一起使用吗?

推荐答案

JPA specification document提供了一个重要提示,您应该not这样做,请参阅第449页的第11.1.20节:

脚注[110]:便携式应用程序应在其他持久字段或属性上使用GeneratedValue注释.

这里,"其他"是指未用@Id注释的实体的字段或属性:

GeneratedValue注释可应用于具有Id注释的实体或映射超类in conjunction的主键属性或字段.

因此,我可以得出结论,如果不是全部的话,那么大多数persistence provider个实现可能不支持您预期的(特殊)用例.

Java相关问答推荐

使用log 4j2格式的Hibernate 显示SQL日志(log)

Java 22模式匹配不适用于记录模式匹配.给出汇编问题

Oracle DUAL表上使用DDL时jOOQ问题的解析'

如何粘合(合并)文件Lucene?

Spring Batch 5-不要让它在数据库中自动创建表

Kubernetes的Java客户端检索状态.处于终止状态的Pod的阶段';正在运行';

在Java中,在单个逻辑行中连接列表和单个元素的正确方法是什么?

返回响应时,CamelCase命名约定不起作用

Spring @Value default无法计算表达式

生成桥方法以解决具有相同擦除的冲突方法

使用Jolt将字段转换为列表

基于接口的投影、原生查询和枚举

如何用内置Java从JavaFX应用程序中生成.exe文件?

如何在透视表中添加对计数列的筛选?

从映射列表中检索所有键

错误:不兼容的类型:Double不能转换为Float

在Spring Boot JPA for MySQL中为我的所有类创建Bean时出错?

Java HashMap保留所有时间复杂性

如何使用Hibernate v6.2构建NamingStrategy,以表名作为所有列的前缀?

移动二维数组的行