1

こんにちは、継承でSugar ORM を使用したいと思います。

私のクラス:

  public class Building extends SugarRecord<Building> {

        protected String name;
     }

と:

 public class Kitchen extends Building{

    int value =1;
 }

いくつかのキッチンを保存して一覧表示すると、キッチン AS キッチンのみを照会できますが、AS 建物は照会できません。

どうにかしてこれを解決できますか、または 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): com.adamvarhegyi.clanwars.application.model.Kitchen@103ff5bd
    10-04 13:11:16.994: I/Kitchens:(12104): com.adamvarhegyi.clanwars.application.model.Kitchen@354967b2
    10-04 13:11:16.994: I/Kitchens:(12104): com.adamvarhegyi.clanwars.application.model.Kitchen@33859303
4

3 に答える 3

2

テーブル名はクラスと同じであるため、建物内のキッチンにクエリを実行したり、その逆を行うことはできません。Kitchen クラスで @Table アノテーションを使用して Kitchen のテーブルを作成し、そのテーブルにプライベートな long id 変数があることを確認することをお勧めします (@Table アノテーションを使用する場合に満たすべき条件)。

于 2016-04-11T16:08:27.930 に答える
1

キッチンで親クラスを継承しようとしているのはなぜですか? キッチンを建物に関連付けようとしていますか? この場合、リレーションシップに組み込まれたシュガーを使用できます。

public class Building extends SugarRecord<Building> {

    protected String name;
    Kitchens kitchen; 
}

これにより、キッチンを建物に関連付けることができます。

于 2015-10-07T18:18:23.533 に答える