У меня есть две сущности: Программа и Тенденции. Это отношения между ними.
В тренде:
@Fetch(FetchMode.JOIN)
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "Trending2Program", foreignKey = @ForeignKey(name =
"FK_Trending_Program"))
private Program program;
В программе:
@OneToMany(mappedBy = "program")
private List<Trending> trendingList;
Репозиторий:
@Repository
public interface TrendingRepository extends JpaRepository <Trending, Integer> {
List<Trending>findByDateBetween(LocalDate startDate, LocalDate endDate);
}
При выполнении findById из класса обслуживания, тогда hibernate создаст необходимое соединение:
from
Trending tre0_
left outer join
Program program1_
on tre0_.trending2Program=program1_.Id
Но при выполнении findByDateBetween hibernate создаст два отдельных запроса:
Hibernate:
select
……
from
Trending tre0_
where
tre0_.Date between ? and ?
Hibernate:
select
…….
from
Program program0_
where
program0_.Id=?
Чем отличается? Что я делаю не так и как я могу правильно настроить hibernate, чтобы он создавал необходимое объединение при использовании findByDateBetween
Спасибо