GreenDAO生成实体/名称包约定

时间:2014-02-18 15:15:28

标签: android orm greendao

我目前正在为我的应用程序评估GreenDAO。我面临以下问题。

我的应用包含多个模块(在包中分开,例如“com.example.app.results”,“com.example.app.synchronization”)。其中一些没有依赖关系,其中一些依赖于其他模块(例如synchronization依赖于results,而results没有依赖关系。)

我想建模的内容如下:

模块results具有实体MyResult(属性:名称,值)。

模块synchronization具有实体MyResultSynchronization(属性:MyResult(引用),日期)。

final Schema schema = new Schema(1, "com.example.app");

final Entity myresult = schema.addEntity("results.MyResult");
final Property myresultId = myresult.addIdProperty().getProperty();
myresult.addStringProperty("name");
myresult.addStringProperty("value");

final Entity myResultSynchronization = schema.addEntity("synchronization.MyResultSynchronization");
myResultSynchronization.addIdProperty();
myResultSynchronization.addDateProperty("date");
myResultSynchronization.addToOne(myresult, myresultId);

但是 - $entityPackage.$name不符合我的预期($package\$name ;-))。

我的问题是:我是否被迫将我的应用的所有实体放在一个包中?通过创建多个Schemas,我正在努力做到这一点 - 但是,是否可以在两个(或更多)模式之间使用关联功能?这样做的“正确”方法是什么? (有吗?)

1 个答案:

答案 0 :(得分:2)

事实上,所有实体都必须在同一个包中。

通常你使用像

这样的结构
 com.example.myapp.data

放置管理数据库的所有内容,尤其是实体类。在里面你可以让greendao创建一个dao包,它将放置访问你的数据所需的一切(基础)。

当然,你可以通过在greendao中制作多个sxhemas来强制执行你的naning模式。但是模式将是独立的:它们不会使用相同的数据库,例如,您将无法将它们与toOne ()链接在一起。

如果您仍想使用命名方案,则可以将所有内容生成到中间包,并手动将它们移动到所需的包中。但是,您必须在对数据库模式进行每次更改时重复此操作,这通常比最初可能想到的更多。

相关问题