簡體   English   中英

Hibernate Criteria查詢不會一對多查詢

[英]Hibernate Criteria query doesnt query the many in one to many

我正在嘗試創建一對多查詢。 該聯接似乎正在工作,因為集合已填充,但是當我向集合中添加查詢時,它似乎沒有執行任何操作

這是一堂課:

@OneToMany(fetch=FetchType.LAZY, mappedBy="parent")
    public Set<Child> getChildren() {
        return this.children;
    }

這是其他

@ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="PARENT_ID")
    public Parent getParent() {
        return this.parent;
    }

這是不起作用的查詢

Criteria criteria = session.createCriteria(Parent.class,"p")
               .setFetchMode("p.children", FetchMode.JOIN)
                .createAlias("p.children", "c")
               .add(Restrictions.like("p.name", "%" + nameQuery + "%").ignoreCase())
               .add(Restrictions.eq("c.gender", "boy"));

這個查詢使我所有的父母和他們的所有孩子都得到了正確的名字,但是我只想要男孩,但是它也給了我所有的女孩。 有人看到我在做什么錯嗎?

根據文檔

    Join fetching: Hibernate retrieves the associated instance or collection 
in the same SELECT, using an OUTER JOIN.

在外部聯接中,無論聯接條件如何,您都將獲得兩個表中的所有記錄,因此將獲取策略更改為SELECT並且僅應獲取與限制匹配的結果。 另外,如果您尚未進行批量提取,建議您啟用該功能。

暫無
暫無

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

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