簡體   English   中英

HQL查詢模擬SQL表達式

[英]HQL query analog for the SQL expression

有兩個實體。 會議主題 (相應的表格是會議主題

一次會議可能包含一系列主題。

示例表結構如下:

表

在我的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表達式來解決這個問題,我沒弄清楚,我怎么能這樣做。

我已閱讀此文檔,但不明白,如何將這些示例應用於我的問題。

什么HQL表達式會像上面描述的那樣做SQL呢?

謝謝。

這樣的事情應該有效

select meeting.meetingcomment,
       topic.topicsubject,
       topic.sometopicfield
from Meeting meeting
inner join meeetings.topicsList as topic
where topic.sometopicfield = 11

嘗試這樣的事情:

select m.meetingcomment,
       t.topicsubject,
       t.sometopicfield
from Meeting as m
inner join m.topicsList as t
with t.sometopicfield = 11

如果只需要Meeting類字段,則hql為:

select m from Meeting as m
inner join m.topicsList as t
with t.sometopicfield = 11

然后你會得到一個Meeting對象列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM