我正在使用 Spring Boot 和 Hibernate 来开发应用程序,我想增强 JPA 实体 ID 的类型安全性。目前,ID 字段定义为
Long
,但我想为其提供显式类型。这是我所拥有的一个例子:
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
}
我想修改这段代码,为 ID 字段提供更具体的类型。这是我的想法:
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Id id;
record Id(Long id) {}
}
通过引入一个名为
Id
的嵌套记录类,我可以确保只有该类的实例用作 User
实体的 ID。这种方法使我能够避免意外地将另一个实体的 ID 作为参数传递,因为它不再只是一个 Long
。
您可以执行以下操作:
您现在应该可以操作了。