Не получить данные из таблицы из-за нулевого значения внешнего ключа - PullRequest
0 голосов
/ 17 декабря 2018

Я использую таблицу данных MySQL и SQL-запрос для извлечения данных, я выбираю из двух таблиц, соединенных отношением один-ко-многим и многие-к-одному, но если сопоставленная таблица не имеет никакого значения, я не получаю дажеЗначение таблицы, которую я выбираю.Но когда я помещаю внешний ключ, то он работает нормально, и я являюсь данными обеих таблиц.

@Query("SELECT LD,REC FROM LayerDetails LD JOIN LD.recipeUser REC")
public List getLayerDetails();

Это мой SQL-запрос, когда recipeUser имеет значение null, тогда, несмотря на наличие значения Layerdetails, я не получаю никаких значений.

Ответы [ 2 ]

0 голосов
/ 17 декабря 2018

Это происходит потому, что JOIN здесь - это внутреннее соединение (которое используется по умолчанию, если вы не используете конкретное соединение).Внутреннее объединение повторяется по кортежам LayerDetails и RecipeUser.Однако, так как поле recipeUser равно null в вашем случае, оно не имеет кортежа для этого экземпляра LayerDetails.Таким образом, чтобы также найти экземпляры LayerDetails, которые не имеют recipeUser, вам нужно будет использовать LEFT JOIN.

@Query("SELECT LD,REC FROM LayerDetails LD LEFT JOIN LD.recipeUser REC")
public List getLayerDetails();

Если вы хотите получить больше информации о различных возможностях JOIN вJPA, вы могли бы взглянуть на https://www.objectdb.com/java/jpa/query/jpql/from например.

0 голосов
/ 17 декабря 2018

У меня такая же проблема.Я решил это с помощью LEFT JOIN вместо простого JOIN.

[INNER] JOIN - возвращает только те записи, которые совпадают в обеих таблицах FULL JOIN - возвращает записи в обеих таблицах.Если совпадений нет, пропущенная сторона будет содержать ноль. LEFT JOIN - Возвращает все записи из левой таблицы с соответствующими записями в таблице справа (если доступно). RIGHT JOIN - возвращает все записи из правой таблицы, с соответствующими записями в левой таблице (если доступно).

Explanation Venn diagram

Youможно просмотреть Визуальное представление соединений SQL для получения более подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...