1

嗨,我想使用带有继承的 Sugar ORM。

我的课程:

  public class Building extends SugarRecord<Building> {

        protected String name;
     }

和:

 public class Kitchen extends Building{

    int value =1;
 }

当我保存一些厨房并列出它们时,我只能查询厨房 AS Kitchens,但不能查询 AS Buildings。

我可以以某种方式解决这个问题还是 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 创建一个表,并确保您有一个私有的长 id 表变量(使用 @Table 注释时要满足的条件)希望对您有所帮助!

于 2016-04-11T16:08:27.930 回答
1

Sugar ORM 不支持创建表序列的继承。扩展 SugarRecord 是使用 Sugar ORM 创建表的唯一方法。Sqlite 不会将 Kitchen 视为一个表,查询它确实没有任何意义。建议:尽量让你的代码适合扩展SugarRecord或搜索其他ORM。

于 2018-05-29T11:40:44.223 回答
1

你为什么要在厨房继承父类?您是否试图将厨房与建筑物联系起来?如果是这种情况,您可以使用建立在关系中的糖:

public class Building extends SugarRecord<Building> {

    protected String name;
    Kitchens kitchen; 
}

这将允许您将厨房与建筑物联系起来。

于 2015-10-07T18:18:23.533 回答