gpt4 book ai didi

java - Hibernate:左连接中的 where 子句无法正常工作

转载 作者:行者123 更新时间:2023-11-30 04:14:18 24 4
gpt4 key购买 nike

我有 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 子句有问题吗?

“从竞赛中选择 com 作为 com 内部加入 com.events 事件,其中 event.expectedStartdate > '2013-09-13'”

另外,我必须指定,如果我删除满足条件的 2 个事件并保留不满足条件的事件,则查询不会返回任何内容(没有对象 Comparison)。

我还尝试了 with 子句,但得到了相同的结果。

最佳答案

当您查询实体时,您总是会收到完全实现的对象映射。您无法通过在查询上添加条件来过滤掉事件集中的内容。如果查询找到Competition,那么您将获得整个比赛。当您访问该集合时,竞赛的所有子项都将始终存在。

将 ORM 查询转换为简单语言的另一种方式是:

“为我查找每场至少有一项赛事在 13 日之后开始的比赛”

不是

“为我找到每场比赛,并且仅包括 13 日之后开始的赛事。”

关于java - Hibernate:左连接中的 where 子句无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18795272/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com