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

Куда напишешь JOIN FETCH в findById()

JOIN FETCH в JPA/Hibernate используется для жадной загрузки связанных сущностей, избегая проблемы N+1. В findById() его нельзя применить напрямую, так как это метод CrudRepository/JpaRepository, но можно использовать в JPQL/HQL или Criteria API.

Пример с @Query:

java
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    @Query("SELECT u FROM User u JOIN FETCH u.roles WHERE u.id = :id")
    Optional<User> findByIdWithRoles(@Param("id") Long id);
}

Или через EntityGraph:

java
@EntityGraph(attributePaths = "roles")
Optional<User> findWithRolesById(Long id);

Для стандартного findById() ленивая загрузка останется, JOIN FETCH не применим.

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

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

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

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