Criteria API root.join操作。发生什么事?

时间:2014-07-13 14:56:33

标签: jpa criteria-api

我有一个实体Provider,每个提供商都有ProviderLanguage

列表
@OneToMany(fetch = FetchType.EAGER)
@JoinColumn(name = PROVIDER_ID, referencedColumnName = PROVIDER_ID)
private Set<ProviderLanguage> providerLanguages;

部分提供商没有语言。当我写这个代码行

Join<Provider, Language> prLanJoin = root.join(Provider.PROVIDER_LANGUAGES)
                .join(Language.LANGUAGE);

只是未使用的prLanJoin变量,我的搜索结果并不包括没有语言的frividers。但是这行代码如何影响搜索结果prLanJoin并没有在任何地方使用。

当我评论这一行时,它按预期工作,至少对我而言)

P.S我不再使用prLanJoin加入代码了。我可以简单地评论这一行,代码也可以。

感谢。

1 个答案:

答案 0 :(得分:1)

起初太奇怪了,谷歌搜索后我找到了,这就是答案......

  

符合规范:联接可以链接在一起导航到   目标实体的相关实体,而无需创建   加入每个联接的实例。

因此,即使您没有使用该实例,也可以使用连接方法操作..可能正在使用元模型

  

连接的目标使用EntityType类型的Metamodel类   指定已连接实体的持久字段或属性。