Код: Выделить всё
select myfood.*, meals.date, meals.meal, meal_food.servings
from myfood
left join meal_food on myfood.fdc_id = meal_food.myfood_id
left join meals on meal_food.meal_id = meals.id
where myfood.user_id = 0 and meals.user_id = 0 and meals.date = '2025-06-19';
< /code>
возвращается одна запись: < /p>
fdc_id user_id brand category date meal servings
1872514 0 Kroger Juice 2025-06-19 Breakfast 1
< /code>
Вот hebernate Query < /p>
@Query(value = "select myfood.*, meals.date, meals.meal, meal_food.servings " +
"from myfood " +
"left join meal_food on myfood.fdc_id = meal_food.myfood_id " +
"left join meals on meal_food.meal_id = meals.id " +
"where myfood.user_id = 0 and meals.user_id = 0 and meals.date = '2025-06-19'", nativeQuery = true)
< /code>
Этот запрос называется из Java Spring Boot, как это: < /p>
@GetMapping("/get-meals")
public List getMeals() {
List meals = mealRepo.findMyFood();
System.out.println("MealController.getMeals: meals.size() = " + meals.size());
return meals;
}
< /code>
Я вижу запрос Hibernate, возвращенный в консоли: < /p>
> Hibernate: select myfood.*, meals.date, meals.meal,
> meal_food.servings from myfood left join meal_food on
> myfood.fdc_id = meal_food.myfood_id left join meals on
> meal_food.meal_id = meals.id where myfood.user_id = 0 and
> meals.user_id = 0 and meals.date = '2025-06-19'
< /code>
< /blockquote>
, который возвращает 0 записей, а не ожидаемый 1. < /p>
MealController.getMeals: meals.size() = 0
< /code>
Я проверил тройной проверку, что модель Foodgui.java соответствует ожидаемым возвращаемым значениям: < /p>
@NoArgsConstructor
@AllArgsConstructor
@Setter
@Getter
public class MealGui {
private Long fdc_id; // from myfood table
private Integer user_id; // from myfood table and meal table
private String brand; // from myfood table
private String category; // from myfood table
private String date; // from meal table
private String meal; // from meal table (e.g., Breakfast, Lunch, Dinner)
private Float servings; // from meal_food table
}
< /code>
и что поля модели соответствуют соответствующим именам столбцов таблицы, например: < /p>
@Entity
@Setter
@Getter
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class Meal {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Integer id;
@Column(name = "user_id")
private Integer user_id;
@Column(name = "date")
private String date;
@Column(name = "meal")
private String meal;
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... -hibernate