Значение внешнего ключа таблицы не обновляется автоматически в Hibernate 5 - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть следующие сущности книги и автора с отношением oneToMany от автора к книге

@Entity
@Table(name = "Author")
public class Author {

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

@OneToMany(mappedBy = "author", cascade = CascadeType.ALL)
private List<Book> bookList;

gettters/setters

}

и

@Entity
@Table(name = "Book")
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String title;

@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "authorId")
private Author author;

getters/setters
}

мой контроллер

@PostMapping("/author")
public ResponseEntity<?> save(@RequestBody Author author) {
    long id = bookService.save(author);
    return ResponseEntity.ok().body("New Book has been saved with ID:" +id);
}

дао класс

@Override
public long save(Author author) {
    sessionFactory.getCurrentSession().save(author);
    return author.getId();
}

Я вызываю вышеуказанный веб-сервис с использованием следующего ввода: -

{
"name":"Herbert shilde",
"bookList":[{
    "title":"My Book"   
}]
}

В моей базе данных таблица авторов вставляет правильные данные, но таблица книг не вставляет чужиеключ соответствующей записи.Как вы можете видеть на изображении ниже, что authorId в таблице книг - ноль.Я использую hibernate 5.

Авторский стол

enter image description here

Книжный стол

enter image description here

Любая помощь будет оценена

1 Ответ

0 голосов
/ 19 сентября 2018

Изменить

@JoinColumn(name = "authorId")

на

@JoinColumn(name = "authorId", referencedColumnName = "id")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...