Структура базы данных
Мне нужно извлечь только конкретные данные из таблицы 1, которые связаны с данными в таблице 2. Например:
Допустим, в таблице "меню" у меня есть 2 строки - "Пицца" и "Фри"
а в «Таблице ингредиентов» у меня 3 строки - «Сыр», «Картофель», «Соус»
«Пицца» связана с «Сыром» и «Соусом» с внешними ключами из Третьей таблицы, а «Картошка» связана с «Картофелем», теперь я хочу показать только данные из таблицы «меню» и «Ингредиенты» столы, которые связаны между собой.
например:
Пицца - "Сыр", "Соус"
Картофель фри - "Картошка"
Пока я могу только перечислить данные (все данные) из обеих таблиц, я не могу выбрать, какие данные показывать.
Thymeleaf:
<tr th:each="menu : ${menuList}">
<td th:text="${menu.name}"></td>
<td><a th:href="@{/foodDescription}" th:text="Description">Description</a></td>
<td th:each="ing : ${ingredientList}">
<ul>
<li th:text = ${ing.ingredientName}></li>
<!-- Here I only want to display ingredientName and description which
are connected to the specific ${menu.name} -->
</ul>
</td>
</tr>
Контроллер:
@Controller
public class MyController{
@Autowired
MenuRepository menuRepository;
@Autowired
IngredientRepository ingredientRepository;
@GetMapping("/hello")
private String hello(){
return "hello-page";
}
@GetMapping("/recipeList")
public String listPage(Model model){
model.addAttribute("menuList",menuRepository.findAll());
model.addAttribute("ingredientList", ingredientRepository.findAll());
return "list-page";
}
Menu.java:
@Entity
@Table(name = "menu")
public class Menu {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name = "name")
private String name;
// Mapping To second table
@OneToMany(cascade = CascadeType.ALL)
@JoinTable(name = "menu_ingredient",
joinColumns = @JoinColumn(name = "menu_id"),
inverseJoinColumns = @JoinColumn(name = "ingredient_id"))
private List<Ingredients> ingredient = new ArrayList<>();
// Constructor/Getter/Setter/ToString
Ingredient.java:
@Entity
@Table(name = "ingredients")
public class Ingredients {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name = "ingredient")
private String ingredientName;
@Column(name = "description")
private String ingredientDescription;