У меня есть три таблицы:
1) книга: id (основной), имя
2) магазин: код (уникальный, не первичный), название
3) book_shop: book_id, shop_id (код), цена
Я хочу получить магазины в книге, как
book.getShop();
Как связать эту сущность?
Я пытался:
@Data
@NoArgsConstructor
@Entity
@Table(name = "book", schema = "example")
@EntityListeners(AuditingEntityListener.class)
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String name;
@OneToMany(mappedBy = "book", cascade = CascadeType.ALL, orphanRemoval = true)
private Set<BookShop> bookShop;
}
.
@Data
@NoArgsConstructor
@Entity
@Table(name = "shop", schema = "example")
@EntityListeners(AuditingEntityListener.class)
public class Shop {
@Id
private int code;
private String name;
@OneToMany(mappedBy = "shop", cascade = CascadeType.ALL, orphanRemoval = true)
private Set<BookShop> bookShop;
}
.
@Data
@NoArgsConstructor
@Entity
@Table(name = "book_shop", schema = "example")
public class BookShop implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Id
@ManyToOne
@JoinColumn(name = "book_id")
private Book book;
@Id
@ManyToOne
@JoinColumn(name = "shop_id")
private Shop shop;
@Column(name = "price")
private int fromDate;
}
Этот код возвращает пустой набор: Book book = bookRepostiory.getById (1) .get (). GetBookShop ()