Технология:
У меня есть объект, который содержит однонаправленную самореференцию:
@Entity
public class Example {
@Id
@GeneratedValue
Long id;
@Setter
String title;
...
@OneToOne
Example earlierVersion;
@Setter
@OneToOne(mappedBy = "earlierVersion")
Example laterVersion;
}
Меня интересуют последние версии примеров. Поэтому я запрашиваю через Spring JPA методы запроса:
List<Example> findByLaterVersionIsNull();
Это хорошо работает с версией Spring Boot 1.5.2.REALEASE (maven).
Но после изменения в Spring Boot версии 2.0.0 или выше кажется, что генерируемый SQL, который выполняется, больше не содержит необходимых LEFT OUTER JOIN
.
например:.
Версия 1.5.2. RELEASE
select ...
from example example0_
left outer join example example1_ on example0_.id=example1_.earlier_version_id
where (example1_.id is null) ?
После версии 2.0.0.RELEASE
select ...
from combination combinatio0_
where (combinatio0_.id is null)
Конечно, более поздний запрос вообще не имеет смысла, поскольку id
является первичным ключом.
Так что я почти уверен, что сделал что-то не так или просто не понял, что что-то важное изменилось. Но после долгих исследований это будет мой первый пост в этом замечательном сообществе, чтобы получить поддержку.
Заранее спасибо!