簡體   English   中英

休眠狀態:左聯接中的where子句無法正常工作

[英]Hibernate: where clause in left join is not working properly

我在一對多關系中有2個班級:

   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的星號<'2013-09-13'),但是當我運行查詢時,我得到3個事件,而不是2個。我確定數據庫中的數據是肯定的,所以where子句的問題?

"select com from Competition as com inner join com.events event where event.expectedStartdate > '2013-09-13' "

另外,我必須指定,如果刪除兩個符合條件的事件並保留不符合條件的事件,則查詢將不返回任何內容(無對象競爭)。

我也嘗試了with子句,但得到的結果相同。

查詢實體時,您總是會收到完全實現的對象映射。 您不能通過在查詢中設置條件來過濾掉事件集中的內容。 如果查詢找到Competition那么您將獲得整個競賽。 當您進入比賽時,比賽總是將所有孩子都放在那里。

提出另一種將ORM查詢翻譯為簡單語言的方式:

“為我找到至少在13日之后開始的至少一項賽事的每項比賽”

“找到我的每場比賽,只有在13日之后才開始的比賽。”

暫無
暫無

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

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