Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Связь между таблицами @OneToMany и @ManyToOne / 4 сообщений из 4, страница 1 из 1
10.07.2021, 23:20
    #40083177
Дмитрий2011
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь между таблицами @OneToMany и @ManyToOne
Всем привет

Есть 2 сущности Author и Book. Предполагается что у одного автора может быть несколько книг. Создаю вот такие сущности

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
@Entity
@Table(name="authors")
public class Author {
    private Integer id;
    private String name;
    private Set<Book> books;

    public Author() {
    }

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    @JsonManagedReference
    @Fetch(FetchMode.SELECT)
    @OneToMany(fetch = FetchType.EAGER,mappedBy = "author", cascade = CascadeType.ALL)
    public Set<Book> getBooks() {
        return books;
    }
    public void setBooks(Set<Book> books) {
        this.books = books;
    }
}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
@Entity
@Table(name="books")
public class Book {
    private Integer id;
    private String book_name;
    private Author author;

    public Book() {
    }

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }

    public String getBook_name() {
        return book_name;
    }
    public void setBook_name(String book_name) {
        this.book_name = book_name;
    }

    @JsonBackReference
    @ManyToOne
    @JoinColumn(name = "author_id")
    public Author getAuthor() {
        return author;
    }
    public void setAuthor(Author author) {
        this.author = author;
    }
}




Когда я передаю нужный мне id автора все работает хорошо подтягиваются все его книги.
{
"id": 1,
"name": "author1",
"books": [
{
"id": 1,
"book_name": "book1"
},
{
"id": 2,
"book_name": "book2"
},
{
"id": 3,
"book_name": "book3"
}
]
}


Но когда я передаю нужный мне id книги он не выводит автора. А лишь выводит следующую информацию
{
"id": 1,
"book_name": "book1"
}

Что мне нужно сделать чтобы информация об авторе книги тоже выводилась?
...
Рейтинг: 0 / 0
12.07.2021, 10:26
    #40083310
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь между таблицами @OneToMany и @ManyToOne
Дмитрий2011,

Код где?
...
Рейтинг: 0 / 0
14.07.2021, 08:08
    #40083702
Музаффар
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь между таблицами @OneToMany и @ManyToOne
Дмитрий2011,

так с JsonРеференсы так работают же, делает однонаправленный связь, разве нет?
...
Рейтинг: 0 / 0
15.07.2021, 21:03
    #40084257
Дмитрий2011
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь между таблицами @OneToMany и @ManyToOne
Насколько я понял из прочитанного то там идет связь с обоих сторон.

Т.е. если отношение @OneToMany то мы получаем нужную нам записи и все записи которые подтянутся из другой таблицы.

А если с другой стороны у нас @ManyToOne то мы ссылаясь на какую-нибудь запись сможем получить из другой таблицы связанную запись. Допустим у нас в одной таблице автор, а в другой его книги. И тогда по id книги с помощью @ManyToOne должны подтянуть автора этой книги.

Но это не работает. Вернее в запросе эта информация не отображается но через код эти данные получить можно.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Связь между таблицами @OneToMany и @ManyToOne / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]