Встречается на 2% собеседований по Java

Как изменить генерируемый Spring запрос

Spring Data JPA позволяет кастомизировать запросы через аннотации @Query или спецификации.

1. @Query (JPQL или нативный SQL):

java
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    @Query("SELECT u FROM User u WHERE u.active = true")
    List<User> findActiveUsers();
    
    @Query(value = "SELECT * FROM users WHERE age > :age", nativeQuery = true)
    List<User> findByAgeGreaterThan(@Param("age") int age);
}

2. Specification (динамические запросы):

java
public class UserSpecifications {
    public static Specification<User> hasName(String name) {
        return (root, query, cb) -> cb.equal(root.get("name"), name);
    }
}

// Использование:
List<User> users = userRepository.findAll(hasName("John"));

3. QueryDSL:
Подключается через JPAQueryFactory для типобезопасных запросов.

4. @EntityGraph для управления fetch-стратегией.

Выбор зависит от сложности запроса и требований к производительности.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы