用糖ORM继承

时间:2015-10-04 11:18:20

标签: android inheritance orm sugarorm

您好我想使用Sugar ORM 继承。

我的课程:

SELECT `book`, `chapter`, `verse`, `text` 
from `bible`
WHERE version = 'kjv'
AND book = 1 
AND chapter >= 1
AND chapter <= 2

SELECT `book`, `chapter`, `verse`, `text`
from `bible`
WHERE version = 'kjv'   
AND book = 1 
AND chapter = 3                 
AND verse <= 10

  public class Building extends SugarRecord<Building> {

        protected String name;
     }

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

我能以某种方式解决这个问题,或者糖ORM没有这个功能吗?

日志记录:

 public class Kitchen extends Building{

    int value =1;
 }

输出:

   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());
   }

3 个答案:

答案 0 :(得分:2)

表名与类相同,因此您无法查询Building in Building或反之亦然。我建议你在Kitchen Class上使用@Table注释为Kitchen创建一个表,并确保你有一个表的私有长id变量(如果你使用@Table注释就满足一个条件) 希望它有所帮助!

答案 1 :(得分:1)

为什么要尝试在厨房中继承父类?你想把厨房与建筑联系起来吗?如果是这种情况,您可以使用内置关系中的糖:

public class Building extends SugarRecord<Building> {

    protected String name;
    Kitchens kitchen; 
}

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

答案 2 :(得分:1)

Sugar ORM不支持用于创建表序列的继承。扩展SugarRecord是使用Sugar ORM创建表的唯一方法。 厨房不会被Sqlite视为一张桌子,查询它确实没什么意义。 建议:尝试使您的代码适合扩展SugarRecord或搜索其他ORM。