50. Получение только ID через Spring Data JPA #
Условие задачи:
📌 В интерфейсе HeavyDataRepository надо реализовать метод, который будет возвращать список только id сущностей HeavyData, а не объекты целиком.
Код:
public interface HeavyDataRepository extends JpaRepository<HeavyData, Integer> {
List<Integer> getHeavyDataIds(); // нужно получить только ID
List<HeavyData> findAllByIsActive(Boolean isActive);
}
Спойлеры к решению
Подсказки
💡 В Spring Data JPA можно использовать аннотацию
💡 При необходимости использовать нативный SQL —
💡 Метод должен возвращать
@Query с JPQL: select h.id from HeavyData h.💡 При необходимости использовать нативный SQL —
@Query(value = "SELECT id FROM heavy_data", nativeQuery = true).💡 Метод должен возвращать
List<Integer>, совпадая с типом выбранного поля.Решение
public interface HeavyDataRepository extends JpaRepository<HeavyData, Integer> {
// 1) JPQL-запрос через @Query
@Query("SELECT h.id FROM HeavyData h")
List<Integer> getHeavyDataIds();
// 2) (опционально) нативный SQL
// @Query(value = "SELECT id FROM heavy_data", nativeQuery = true)
// List<Integer> getHeavyDataIds();
List<HeavyData> findAllByIsActive(Boolean isActive);
}
📌 Что важно помнить:
✅ Аннотация @Query позволяет явно задать выборку необходимых полей.
✅ Возвращаемый тип метода (List<Integer>) должен соответствовать типу поля в запросе.
✅ Для нативных запросов указывайте nativeQuery = true.