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
.