Я новичок в Springboot. Я пытаюсь реализовать простой REST API, используя:
-Springboot, JPA и отдых вместе с гибернацией
У меня есть 2 таблицы базы данных, записная книжка, которая содержит от 1 до многих заметок
Я уже настроил 2 таблицы и отношения. Я также создал NotebookRepository и NoteRepository, чтобы получить базовые операции CRUD через остальную часть Springboot. Соединение с базой данных и отношения функционируют
но я не знаю, как добавить новую заметку (у нее есть внешний ключ notebook_id, который не равен NULL), и каждый раз я пытаюсь опубликовать что-то подобное
{
«Название:» а»,
«Текст»: «все»,
"ноутбук":{
"Идентификатор": 2
}
}
я получаю эту ошибку:
Вызвано: java.sql.SQLIntegrityConstraintViolationException: столбец 'notebook_id' не может быть пустым
@Entity
@Table(name="notebook")
public class NoteBook {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private int id;
@Column(name="name")
private String name;
@OneToMany(mappedBy="notebook", cascade=CascadeType.ALL)
List<Note> notes;
public NoteBook() {
}
public NoteBook(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Note> getNotes() {
return notes;
}
public void setNotes(List<Note> notes) {
this.notes = notes;
}
public void addNote(Note note) {
if(notes == null) {
notes = new ArrayList<>();
}
note.setNotebook(this);
notes.add(note);
}
@Entity
@Table(name="note")
public class Note {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private int id;
@Column(name="title")
private String title;
@Column(name="text")
private String text;
@ManyToOne(cascade={CascadeType.MERGE, CascadeType.DETACH, CascadeType.PERSIST, CascadeType.REFRESH})
@JoinColumn(name="notebook_id")
private NoteBook notebook;
public Note() {
}
public Note(String title, String text) {
this.title = title;
this.text = text;
}
@RepositoryRestResource(collectionResourceRel = "note", path = "notes")
public interface NoteRepository extends JpaRepository<Note, Integer>{
//No code...
}
@RepositoryRestResource(collectionResourceRel = "notebook", path = "notebooks")
public interface NotebookRepository extends JpaRepository<NoteBook, Integer>{
}