如何在ormlite中选择包含所有相关对象(表)的所有行

时间:2012-08-03 14:54:44

标签: android ormlite

所以我想知道是否有可能选择一个表的每一行,包括对其他表(对象)的其他引用,如:

class A{
    @DatabaseField  
    int somethingA; 
    @DatabaseField  
    String someStringA;

    @DatabaseField(canBeNull = false, foreign=true, foreignAutoRefresh=true)  
  >>  B instanceB;

    @ForeignCollectionField  
  >>  Collection< C > lotsOfCs;
}

class B{
    @DatabaseField  
    int somethingb; 
    @DatabaseField  
    String someStringB;
}

Classe C{
    @DatabaseField  
    int somethingC; 
    @DatabaseField  
    String someStringC;

    @DatabaseField( foreign=true, foreignAutoRefresh=true)  
   >> A instanceA;
}

那么如何选择包含B和C对象的表/类A的所有行,我是否需要手动获取B和C?

的问候,

1 个答案:

答案 0 :(得分:1)

不幸的是,ORMLite在从数据库获取对象时不使用JOIN,因此无法使用一个查询从多个表中获取结果。

  

我需要手动获取B和C吗?

是的,虽然您可以选择让ORMLite在单独的查询中执行此操作。使用foreignAutoRefresh = true时,ORMLite将执行辅助查询,以便在您获得instanceB时自动刷新A字段。如果您向eager = true外部集合添加lotsOfCs,那么该查询也会在创建A之前关闭。