2012-04-25 120 views
0

我有一個2種型號,第二個是映射到相同的第一模型兩次,用具體的數值(它有一個多對多表中的與附加價值的作用):當沒有結果應該返回時,OneToMany會返回1個結果?

public class ModelB extend Model { 
    public ModelA parent; 
    public ModelA child; 
    public String value; 
    public boolean verified = true; 
} 

在MODELA:

@OneToMany(mappedBy="child") 
List<ModelB> items; 

如果沒有條目在ModelB的數據庫中,我做了modelA.items.size() => 1!

爲什麼1?它應該是0.

這會導致關於布爾和其他一些未解釋的錯誤。

我該如何解決?我做錯了什麼?

謝謝。

+0

從列表中取第一個元素並告訴我們它是什麼。它是否爲空?或者這是一個具有價值的對象? – Fixus 2012-04-26 05:57:23

+0

這是ModelB的一個對象,但所有的字段都是null。我再次檢查數據庫,並且表是空的! – 2012-04-26 07:02:49

+0

嘗試在ModelA中設置默認值:列表 items = new列表(); – Fixus 2012-04-26 07:31:55

回答

1

http://www.avaje.org/ebean/introquery_joinquery.html

看來,使用「獲取連接」在上面的鏈路描述的接合時,據推測這是Ebean的行爲目前。然而,你可以解決,通過執行「查詢加盟」像這樣的一對多關係:

List<Order> orders = 
Ebean.find(Order.class) 
    .fetch("customer", new FetchConfig().query()) 
    .findList(); 
+0

我試過了,但沒有改變任何東西:/ – 2012-08-16 09:15:10

0

我遇到了同樣的問題,並且能夠通過添加標識列到輔助表來解決它(ModelB )。我沒有調查原因,但我認爲Ebean在這種情況下需要桌面上的主鍵。