繁体   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