2015-10-04 48 views
1

嗨我想用繼承的糖ORM 繼承與糖ORM

我的課表:

public class Building extends SugarRecord<Building> { 

     protected String name; 
    } 

和:

public class Kitchen extends Building{ 

    int value =1; 
} 

當我保存一些廚房,一一列舉了,我只能查詢作爲廚房的廚房,但不能建築物。

我能不能解決這個問題或者Sugar ORM沒有這個功能?

記錄:

List<Building> buildingsList = Building.listAll(Building.class); 

    for (Building buidling : buildingsList) { 
     Log.i("Buildings: ", buidling.toString()); 
    } 

    List<Kitchen> kitchenList = Kitchen.listAll(Kitchen.class); 

    for (Kitchen kitchen : kitchenList) { 
     Log.i("Kitchens: ", kitchen.toString()); 
    } 

輸出:

//Adding Kitchens, 
10-04 13:10:53.212: I/Sugar(12104): Kitchen saved : 1 
10-04 13:10:58.058: I/Sugar(12104): Kitchen saved : 2 
10-04 13:10:58.455: I/Sugar(12104): Kitchen saved : 3 


//Listing Buildings, nothing 
10-04 13:11:16.993: D/SQL Log(12104): SQLiteQuery: SELECT * FROM BUILDING 

*NONE* 

    //Listing as Kitchens, here they are: 
    10-04 13:11:16.993: D/SQL Log(12104): SQLiteQuery: SELECT * FROM KITCHEN 
    10-04 13:11:16.994: I/Kitchens:(12104): [email protected] 
    10-04 13:11:16.994: I/Kitchens:(12104): [email protected] 
    10-04 13:11:16.994: I/Kitchens:(12104): [email protected] 
+0

如果您打算考慮另一個可以輕鬆處理繼承的ORM,請嘗試[JDXA](http://softwaretree.com/v1/products/jdxa/jdxa.html)。 JDXA可以在類層次結構中多態獲取對象。此外,JDXA不要求您從任何基類擴展模型類。 –

回答

1

爲什麼你想繼承廚房父類?你想把廚房和建築聯繫起來嗎?如果是這種情況,您可以使用內置關係的糖:

public class Building extends SugarRecord<Building> { 

    protected String name; 
    Kitchens kitchen; 
} 

這將允許您將廚房與建築物相關聯。

2

表名與類相同,因此您無法查詢建築中的廚房或反之亦然。我建議你在Kitchen Class上使用@Table註釋來爲Kitchen創建一張桌子,並且確保你有一個私人的長ID變量(如果你使用@Table註解,則滿足條件) 希望它有幫助!