具有建構子的 Entity 物件也必須有預設建構子

當「Java 持續性 API (JPA)」實體類別有帶有引數的建構子時,該類別也必須有無引數的預設建構子。 OpenJPA 實作會自動產生無引數建構子,但 EclipseLink 實作則否。

此規則會掃描具有 @Entity@MappedSuperclass 註釋的實體類別。 具有建構子但沒有無引數建構子的實體類別會被標示。 自動修復將在類別中加入一個空的無參數構建程式。

例如,此規則會標示下列實體類別:

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class MissingNoArgConstructorEntity {
    @Id private int id; public MissingNoArgConstructorEntity (int id) { this.id = id;
    }}

自動修正將新增無參數構成程式:

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class MissingNoArgConstructorEntity {
    @Id private int id; public MissingNoArgConstructorEntity () {
    } public MissingNoArgConstructorEntity (int id) { this.id = id;
    }}

如需此問題以及其他 OpenJPA 至 EclipseLink 移轉問題的相關資訊,請參閱 OpenJPA 至 EclipseLink JPA 移轉:對映手冊。