我正在嘗試使用 Java 記錄創建物體類,但我收到錯誤訊息“物體沒有主鍵”,盡管我分配了 ID 注釋。
import javax.persistence.*;
import java.time.LocalDate;
@Entity
public record Agent (
@Id
String code,
String name,
LocalDate date,
String workingArea,
String country,
String phoneNumber,
boolean licenseToKill,
int credits,
byte[] picture)
{}
這有什么問題?
uj5u.com熱心網友回復:
Arecord不能用作 Hibernate 物體,因為它違反了 JPA 規范對物體的要求。制作它class并使用@Immutable注釋代替:
@Entity
@Immutable
public class Agent
uj5u.com熱心網友回復:
只是為了完整性而清除答案(盡管@Turning85 和@gkatiforis 已經提供了正確的解釋):
根據 JPA 規范,物體必須遵循以下要求:
- 物體類需要是非最終的,
- 物體類需要有一個公共或受保護的無引數建構式,
- 物體屬性必須是非最終的。
但是,正如本文所解釋的,Java Record 型別是這樣定義的:
- 關聯的 Java 類是最終的,
- 只有一個建構式接受所有屬性,
- Java 記錄屬性是最終的。
但是記錄非常適合 DTO 投影,它通常用作存盤在資料庫中的資料的只讀表示。更多資訊 - https://thorben-janssen.com/java-records-hibernate-jpa/
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/347725.html
標籤:爪哇 休眠 java-14 javax.persistence
