[英]java.sql.SQLException: Field foreign_key doesn't have a default value
我有以下模型結構:
@Entity
@Table(name = "MY_TEMPLATE")
public class MyTemplate {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", nullable = false, updatable = false)
private Long id;
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "MY_TEMPLATE_ID")
private List<MyObject> myobjects = new ArrayList<>();
...
}
@Entity
@Table(name = "MY_OBJECT")
public class MyObject implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", nullable = false, updatable = false)
private Long id;
}
MyDailyResource
沒有引用MyTemplate
我也有通常的CrudRepository
:
public interface MyTemplateRepository extends CrudRepository<MyTemplate, Long> {
}
當我執行時:
myTemplateRepo.save(myTemplate)
// myTemplate在myObjects集合中有一個元素
我看到以下錯誤:
insert
into
MY_TEMPLATE
(LAST_MODIFIED, LAST_MODIFIED_BY, NAME)
values
(?, ?, ?)
insert
into
MY_OBJECT
(BAR, FOO)
values
(?, ?)
java.sql.SQLException: Field 'MY_TEMPLATE_ID' doesn't have a default value
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
我不知道我該怎么辦以及如何解決。
能否請你推薦我一些東西?
看起來是因為我對數據庫中的外鍵沒有null約束。 但我不喜歡消除這種約束
希望您的父表是MY_TEMPLATE,子表是MY_OBJECT
更新您的課程
@Entity
@Table(name = "MY_TEMPLATE")
public class MyTemplate {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", nullable = false, updatable = false)
private Long id;
@OneToMany(mappedBy="myTemplate", cascade = CascadeType.ALL, orphanRemoval = true)
private List<MyObject> myObjects = new ArrayList<>();
...
}
@Entity
@Table(name = "MY_OBJECT")
public class MyObject implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", nullable = false, updatable = false)
private Long id;
@ManyToOne
@JoinColumn(name = "MY_TEMPLATE_ID")
private MyTemplate myTemplate;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.