我可以将 Java 16 记录与 JPA 实体一起使用吗?

Mon*_*gGu 25 java jpa spring-data-jpa spring-boot java-record

我正在尝试做类似下面的事情。

@Entity
@Table(name="Sample")
public record Sample(Integer id, String name) {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="user_id")
    private Integer id;

    @Column(name="username")
    private String name;

}
Run Code Online (Sandbox Code Playgroud)

但是,它给我错误“记录中不允许用户声明的非静态字段 id”,名称字段也相同。

有没有办法将新的java功能“记录”与JPA注释一起使用?

Bas*_*que 36

太长了;博士

\n

目前尚无支持,但可能会在 2024 年晚些时候提供支持。

\n

未来

\n

根据Ivar Grimstad 的《Jakarta EE 11:下一个主要 Jakarta EE 更新正在形成》,2023 年 8 月:

\n\n

展示

\n

请参阅Billy Korando 撰写的文章“在 JPA 中使用记录作为投影” 。以下是一个简短的总结。

\n

记录不能是实体

\n

Jakarta Persistence JPA;以前的Java Persistence API)实现(例如Hibernate)依赖于JEP 395 禁止或不推荐的功能:记录规范:无参数构造函数、非最终字段、setter 等。

\n

\xe2\x9e\xa5 所以,不,记录不能用作 JPA Entity

\n

记录的其他用途

\n

您可以将记录用于:

\n
    \n
  • CriteriaBuilder
  • \n
  • TypedQuery
  • \n
  • NativeQuery
  • \n
  • 映射定义
  • \n
\n

Spring data 也有一些支持。

\n

请参阅上面链接的文章了解详细信息以及其他两篇文章的链接。

\n