我目前正在为我的应用程序评估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
,我正在努力做到这一点 - 但是,是否可以在两个(或更多)模式之间使用关联功能?这样做的“正确”方法是什么? (有吗?)
答案 0 :(得分:2)
事实上,所有实体都必须在同一个包中。
通常你使用像
这样的结构 com.example.myapp.data
放置管理数据库的所有内容,尤其是实体类。在里面你可以让greendao创建一个dao包,它将放置访问你的数据所需的一切(基础)。
当然,你可以通过在greendao中制作多个sxhemas来强制执行你的naning模式。但是模式将是独立的:它们不会使用相同的数据库,例如,您将无法将它们与toOne ()
链接在一起。
如果您仍想使用命名方案,则可以将所有内容生成到中间包,并手动将它们移动到所需的包中。但是,您必须在对数据库模式进行每次更改时重复此操作,这通常比最初可能想到的更多。