Встречается на 2% собеседований по Java
Можно ли реализовать в методе с аннотацией Query в Repository добавить сложную Java логику в Spring
Нет, аннотация @Query в Spring Data JPA предназначена только для написания JPQL или нативного SQL запросов. Внутри нее нельзя использовать Java-логику. Для сложной логики лучше:
- Создать кастомный репозиторий с имплементацией
- Использовать
@EntityGraphилиSpecification - Вынести логику в сервисный слой
Пример кастомного репозитория:
java
public interface UserRepository extends JpaRepository<User, Long>, CustomUserRepository {
@Query("SELECT u FROM User u WHERE u.active = true")
List<User> findActiveUsers();
}
public interface CustomUserRepository {
List<User> findWithComplexLogic();
}
public class CustomUserRepositoryImpl implements CustomUserRepository {
@Override
public List<User> findWithComplexLogic() {
// сложная Java логика здесь
}
}
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы