У меня следующая структура модели:
@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)
Понятия не имею, что я делаю не так и как это исправить.
Не могли бы вы мне что-нибудь порекомендовать?
приписка
Похоже, это потому, что у меня нет нулевого ограничения для этого внешнего ключа в базе данных. Но я не люблю снимать это ограничение