У меня отношения между многими и многими похожи, как между акциями и категориями, как показано на рисунке выше И поэтому у нас есть таблица соединений, которая называется stock_category.
Существуют следующие сущности:
public class Stock implements java.io.Serializable {
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "STOCK_ID")
private Integer stockId;
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "stock_category", joinColumns = {
@JoinColumn(name = "STOCK_ID", nullable = false, updatable = false) },
inverseJoinColumns = { @JoinColumn(name = "CATEGORY_ID",
nullable = false, updatable = false) })
private Set<Category> categories;
....
и
Category.java:
@Entity
@Table(name = "category")
public class Category implements java.io.Serializable {
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "CATEGORY_ID")
private Integer categoryId;
@ManyToMany(fetch = FetchType.LAZY, mappedBy = "categories")
private Set<Stock> stocks ;
............
Таким образом, в основном в нашем проекте у нас есть две сущности, которые во многих отношениях связаны (в большинстве случаев двунаправленно) друг с другом. Кроме того, у меня нет сущности таблицы соединения.
Мой вопрос:
1) Как получить данные только путем объединения stock и stock_category (таблицы соединений)? Я не хочу присоединяться к третьему столу. Поскольку у меня нет объекта таблицы соединений, я вынужден также присоединиться к третьей таблице, что вызывает проблемы с производительностью в нашем проекте. Мы используем критерии гибернации. Но я пытался сделать то же самое, используя Spring Data JPA, нативный запрос, HQL и т. Д., Но не смог достичь.
2) Могу ли я получать данные только и только из объединяющей таблицы, то есть stock_category, без объединения каких-либо дополнительных таблиц?