簡體   English   中英

Hibernate OneToMany與OrderBy生成無效的SQL

[英]Hibernate OneToMany with OrderBy generates invalid SQL

我的一對多關系如下:

public class Player {
    private int           id;
    private String        name;
    private List<Payment> payments;

    ... accessors etc
}

public class Payment {
    private int        id;
    private Date       when;
    private BigDecimal amount;

    ... accessors etc
}

orm描述這些:

<entity-mappings ... version="2.0">

    <entity class="domain.Player" access="FIELD">
        <attributes>
            <id name="id">
                <generated-value strategy="AUTO" />
            </id>

            <basic name="name" optional="false" />

            <one-to-many name="payments" fetch="EAGER">
                <order-by>when</order-by>
                <cascade><cascade-all/></cascade>
            </one-to-many>
        </attributes>
    </entity>

    <entity class="domain.Payment" access="FIELD">
        <attributes>
            <id name="id">
                <generated-value strategy="AUTO" />
            </id>

            <basic name="when"   optional="false" />
            <basic name="amount" optional="false" />
        </attributes>
    </entity>

</entity-mappings>

這在Hibernate 4.2.2.Final上可以正常工作,但是如果我更新到4.3.4.Final,則每次嘗試加載Player類型的對象時都會失敗。 4.3.4.Final生成的SQL遵循以下原則:

select ... 
from Player player0_ 
left outer join Player_Payment payments1_ on player0_.id=payments1_.Player_id 
left outer join Payment payment2_ on payments1_.payments_id=payment2_.id 
where player0_.id=? 
order by payments1_.when

即ORDER BY在聯接表上,而不在目標表上。

任何想法-我在這里做錯了還是看起來像是Hibernate錯誤?

映射是正確的。 此Hibernate錯誤已在HHH-8834中報告。 錯誤報告中附加的測試用例使用注釋,但否則與有問題的注釋匹配。

暫無
暫無

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

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