簡體   English   中英

由於嵌套的 object 創建,字段“id”沒有默認值

[英]Field 'id' doesn't have a default value because of nested object creation

我的 Spring 應用程序中出現字段“id”沒有默認值錯誤。 我正在嘗試使用 @Post 方法創建申請人,但在創建申請人時,需要創建新的 creditRating object。

這是方法

 public Applicant create(ApplicantDTO applicantDTO) {
        Applicant applicant = ApplicantMapper.toEntity(applicantDTO);
        applicant.setCreditRating(creditRatingService.create());
        return applicantRepository.save(applicant);
    }

這是我的申請人 class

@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "applicant")
public class Applicant {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private Long identificationNumber;
    private String firstName;
    private String lastName;
    private double monthlyIncome;
    private String phoneNumber;

    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "credit_rating_id", referencedColumnName = "id")
    private CreditRating creditRating;

    @OneToOne(cascade = CascadeType.ALL)
    @JoinTable(name = "applicant_credit",
            joinColumns = {@JoinColumn(name = "applicant_id")},
            inverseJoinColumns = {@JoinColumn(name = "credit_id")}
    )
    private Credit credit;


}

這是 CreditRating object 的創建方法。

 public CreditRating create() {
        CreditRating creditRating = new CreditRating();
        creditRating.setCreditRating(getRandomCreditRating());
        return creditRatingRepository.save(creditRating);
    }

我希望在創建申請人時創建此 object 但不知何故我認為 JPA 無法為其生成 ID,因為我正在像這樣進行創建。

這里要求的是 CreditRating Entity

@Data
@Entity
@AllArgsConstructor
@NoArgsConstructor
@Table(name = "credit_rating")
public class CreditRating {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private int creditRating;

}

我解決了這個問題。 問題出在數據庫 creditRating 和 credit 不知何故沒有勾選 Auto Increment。 我刪除了架構,然后讓 JPA 再次創建表。 然后在 credit 和 creditRating 表上都勾選了 Auto Increment。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM