У меня есть 2 занятия в отношении один-ко-многим:Hibernate: где положение в LEFT JOIN не работает должным образом
Class Competition{
@OneToMany(fetch=FetchType.EAGER, mappedBy="competition")
public Set<Event> getEvents() {
return events;
}
}
Class Event{
@ManyToOne
@JoinColumn(name="id_competition")
public Competition getCompetition() {
return competition;
}
}
При запуске запроса ниже я получаю больше данных, то оно должно быть. В базе данных у меня есть запись о соревнованиях, давайте назовите ее c1 и 3 события: e1, e2 и e3. Одно из событий не соответствует условию (e1 имеет stardate < '2013-09-13'), но когда я запускаю запрос, я получаю 3 события вместо 2. Я уверен в данных в базе данных, так что проблема с где статья?
"select com from Competition as com inner join com.events event where event.expectedStartdate > '2013-09-13' "
Кроме того, я должен указать, что если удалить эти 2 события, которые удовлетворяют условию и сохранить тот, который не удовлетворяет условию, то запрос ничего не возвращает (не объект конкуренции).
Я также пробовал пункт with
, но получаю тот же результат.
Что происходит, когда вы запускаете запрос из интерактивного пользовательского интерфейса DB? Кроме того, вы не указали, какую базу данных вы используете. –
Попробуйте удалить 'fetch = FetchType.EAGER' и запустить запрос, вы говорите, что hibernate загружает все дочерние объекты. –
@Jim Garrison Я использую mysql. Я отредактирую свой пост, чтобы сообщить подробности о выполнении запроса в пользовательском интерфейсе базы данных. –