[英]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.