класс Parent:JPQL не работает должным образом
@Table(name = "users")
class User {
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
List<Gender> genders = new ArrayList<>();
класс для детей:
@Table(name = "gender")
class Gender {
@ManyToOne(cascade = {CascadeType.ALL})
@JoinColumn(name = "userId", nullable = false)
User user;
String sex;
моя цель в MySQL:
SELECT * FROM пользователям LEFT JOIN Genders В на .id = b.id ГДЕ b.sex = 'dasd'
Возврат 1 ROW Он работает хорошо. У меня есть только одна запись, которая соответствует этому условию.
но тот же самый код в JPQL:
ВЫБРАТЬ а из пользователей в LEFT JOIN a.genders б WHERE b.sex = 'DASD'
Возвращает: один пользователь - правильно, и все genders в таблице Пол, но я не хочу ВСЕ, хочу только, когда sex = 'dasd' и только одна запись, которая соответствует этому условию. btw JPQL генерирует N+1 issue и для каждого подзапроса, игнорируя condtion sex = 'dasd'
Как сделать записывать подзапрос, удовлетворяющий условию? Могу ли я заставить подзапрос возвращать только пол, соответствующий запросу JPQL?
Не могли бы вы предоставить код сущности пола? –
Я включил также Gender.java (child) – user3871754