![](/img/trans.png)
[英]OneToMany mapping generates the wrong hibernate SQL during findById/findAll
[英]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.