Таблица сопоставления пропускает неуникальный идентификатор в @manyToMany - PullRequest
0 голосов
/ 04 сентября 2018

Это код фрагмента jpa:

@Entity
public class Author {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;
    private String firstName;
    private String lastName;

    @ManyToMany
    @JoinTable(name = "author_book", joinColumns = @JoinColumn(name = "author_id"),
    inverseJoinColumns = @JoinColumn(name = "book_id"))
    private Set<Book> books = new HashSet<>();

.

 @Entity
    public class Book {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private long id;
        private String title;
        private String isbn;

        @OneToOne
        private Publisher publisher;

        @ManyToMany(mappedBy = "books")
        private Set<Author> authors = new HashSet<>();

.

private void initData() {

        Publisher publisher1 = new Publisher("Tabor");
        publisherRepository.save(publisher1);

        // Magdo, Madziu, Magdaleno
        Author author1 = new Author("Magda", "Magdaleńska");
        Book book1 = new Book("Tytuł książki 1", "123456abc", publisher1);

        author1.getBooks().add(book1);
        book1.getAuthors().add(author1);

        bookRepository.save(book1);
        authorRepository.save(author1);


        // Cygan
        Author author2 = new Author("Cygan", "Śniady");
        Book book2 = new Book("Jak sprzedać dywan", "222", publisher1);
        Book book3 = new Book("Jak sprzedać dywan2", "2223", publisher1);

        author2.getBooks().add(book2);
        author2.getBooks().add(book3);
        book2.getAuthors().add(author2);
        book3.getAuthors().add(author2);

        bookRepository.save(book2);
        bookRepository.save(book3);
        authorRepository.save(author2);
    }

, который генерирует эти таблицы в базе данных:
author book

ab

В третьей таблице отсутствует третья строка со значениями (6, 5).
Я не понимаю почему. Существует первичный ключ для author_id и book_id, а внешний ключ для author_id не уникален, а внешний ключ для book_id не уникален:

sp

Какие-нибудь подсказки, как это исправить?

1 Ответ

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

Я только что создал репозиторий GitHub с вашим кодом, чтобы иметь возможность его протестировать. (Не стесняйтесь клонировать его):

https://github.com/cristianprofile/stack_overflow_response/tree/master

Работает нормально: в авторскую книгу добавлено 3 кортежа.

enter image description here

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...