Как построить JPQL-запрос на соединительной таблице? - PullRequest
0 голосов
/ 06 января 2020

Я пытаюсь написать JPQL-запрос, чтобы получить список ингредиентов пиццы из следующих таблиц

pizza
+----+----------------+------+------------+--------------+
| id | nom            | prix | disponible | categorie_id |
+----+----------------+------+------------+--------------+
|  1 | Margherita     |  950 |          1 |            1 |
|  2 | Regina         | 1200 |          1 |            1 |
|  3 | Trois fromages | 1450 |          1 |            1 |
+----+----------------+------+------------+--------------+

ingredient
+----+-------------------+
| id | nom               |
+----+-------------------+
|  1 | fromage           |
|  2 | jambon            |
|  3 | champignons       |
+----+-------------------+

pizza_ingredient
+----------+---------------+
| pizza_id | ingredient_id |
+----------+---------------+
|        1 |             1 |
|        2 |             1 |
|        3 |             1 |
|        2 |             2 |
|        2 |             3 |
+----------+---------------+

Из следующих объектов

Пицца. java

@Entity
public class Pizza {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @ManyToOne
    private Categorie categorie;

    @OneToMany
    @JoinTable(name  = "pizza_ingredient",
                joinColumns = @JoinColumn(name = "pizza_id"),
                inverseJoinColumns = @JoinColumn(name = "ingredient_id"))
    private List<Ingredient> ingredients = new ArrayList<>();

Ингредиент. java

@Entity
public class Ingredient {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @ManyToOne
    private Pizza pizza;

Я пробовал несколько запросов, но в том числе следующие, но я продолжаю получать java.sql.SQLSyntaxErrorException или подобные ошибки

public List<Ingredient> findIngredients(String pizzaNom) {
        return em.createQuery("SELECT i FROM Pizza p RIGHT JOIN p.ingredient i WHERE i.id = p.id ", Ingredient.class)
                .getResultList();
    }

Мне пока не очень комфортно работать с запросами на соединение и jpql, поэтому все ресурсы, которые я нашел в Интернете до сих пор, еще больше запутали меня в том, что делать. Любая помощь или ресурсы будут оценены.

...