繁体   English   中英

Hibernate渴望加载未获取所有子行

[英]Hibernate eager loading not fetching all child rows

Hibernate版本4.3.10

我具有示例中所述的父子关系。 在某些情况下,我们期望查询Provider时仅返回一行。 在这种情况下,我们通过将setMaxResults方法调用为1来限制条件。

SQL转储显示,hibernate进行外部联接调用,最终返回多个行,但是由于条件上的限制,仅从数据库中读取了第一子行。

    @Entity
    @Table(name = "F_PROVIDER")
    public class Provider {
        @OneToMany(cascade = CascadeType.ALL, mappedBy = "provider", orphanRemoval = true, fetch = FetchType.EAGER)
        private final Set<CredentialFieldDefinition> credentialFieldDefinitionList;
}

@Entity
@Table(name = "F_CRED_FIELDS", uniqueConstraints = { @UniqueConstraint(columnNames = { "name", "provider_id" }) })
public class CredentialFieldDefinition {
@ManyToOne(targetEntity = Provider.class, optional = false)
    @JoinColumn(name = "PROVIDER_ID", nullable = false, unique = false)
    private Provider provider;
}

当我仅阅读一行时,我该如何说服我将全部孩子退还给我?

您可以尝试使用SUBSELECT提取模式:

@OneToMany(cascade = CascadeType.ALL, mappedBy = "provider", orphanRemoval = true, fetch = FetchType.EAGER)
@Fetch(FetchMode.SUBSELECT)
private final Set<CredentialFieldDefinition> credentialFieldDefinitionList;

这样credentialFieldDefinitionList将在单独的查询中初始化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM