@Fly3110
web developer

Как сделать выборку в CrudController по JoinColumn без использования join?

Всем привет.

Есть класс Comment, у которого есть поле user, определенное вот так:

@ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "user_id")
    @NonNull
    private User user;


есть вот такой CommentRepository:

public interface CommentRepository extends CrudRepository<Comment, Integer> {
    List<Comment> findByUserId(Integer userId);
}


Все комментарии пользователя я получаю вот так:

commentRepository.findByUserId(user.getId());

все работает верно за исключением того, что запрос выглядит вот так:

select
    comment0_."id" as id1_1_,
    comment0_."text" as url2_1_,
    comment0_."user_id" as user_id3_1_
    from
        "comments" comment0_
    left outer join
        "users" user1_
    on comment0_."user_id"=user1_."id"
    where
    user1_."id"=?


я хочу избавиться от этого лишнего join'a (ведь можно делать выборку сразу по user_id из таблицы comments).
использовать аннотацию @Query не хочу, мне кажется, что должно быть более правильное решение.

Спасибо.
  • Вопрос задан
  • 53 просмотра
Решения вопроса 1
@Fly3110 Автор вопроса
web developer
Все решилось добавлением optional=false к @ManyToOne
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы