Существует два объекта. Встреча и Тема (соответствующие таблицы встречи и Темы)Атрибут запроса HQL для выражения SQL
Где одна встреча может содержать набор тем.
Пример структуры таблицы выглядит следующим образом:
В моей Java код Meeting
класс имеет следующее заявление:
@OneToMany(cascade = CascadeType.ALL)
@JoinTable(name = "MeetingTopics",
joinColumns = {
@JoinColumn(name = "meetingId")},
inverseJoinColumns = {
@JoinColumn(name = "topicId")})
@Expose
private Set<Topic> topicsList;
Я хочу, чтобы получить список встреч (с тем внутри из них), где someTopicField
темы соответствует определенному значению, скажем, это 11
выражение SQL, чтобы получить то, что я хочу, выглядит следующим образом:
SELECT meetings.meetingcomment,
topics.topicsubject,
topics.sometopicfield
FROM topics
INNER JOIN (meetings
INNER JOIN meetingtopics
ON meetings.meetingid = meetingtopics.meetingid)
ON topics.topicid = meetingtopics.topicid
WHERE (topics.sometopicfield = 11);
Но я хотел бы использовать выражение HQL, чтобы решить эту задачу, и я не понять это, как я мог сделать это.
Я читал this documentation, но не понял, как применить эти примеры к моему вопросу.
Какое выражение HQL будет делать то же, что и выше описанный SQL?
спасибо.
спасибо, я проверю это. – 2013-03-27 12:14:28
, когда я вызываю 'from Meeting как m inner join m.topicsList as t с t.sometopicfield = 11' Я получаю смешанный список с объектами Topic и Meeting внутри. Есть ли способ получить список только с объектами Meeting? – 2013-03-27 12:20:24
Нет, если вам нужно выбрать поля из «Встречи» и «Тема», как в вашем примере. Да, если вы ограничиваете только поля «Встреча» в запросе. Обновлен ответ. – dcernahoschi