具有建構子的 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 移轉:對映手冊。