我目前正在从 ORMlite 切换到 GreenDao,并且在 greendao 中创建我的数据库模型时遇到了麻烦。
我的内容是从服务器获取的,服务器将生成的主键条目标识为字符串。我的内部数据库的主键为 Long(如 Android 要求)。
当我同步时,我需要根据服务器提供的键(此处为“backendId”)创建关系,以使我的同步方式更容易。
在 ORMlite 中,我可以说应该使用哪一列来创建关系。我尝试为 greendao 创建相同的内容,但失败了。
这是我的尝试:一个部门可以拥有资产。“assetId”应该包含存储在 Asset 的“backendId”中的值。
有什么想法可以实现吗?
Entity asset = schema.addEntity("Asset");
asset.setSuperclass("Backend");
asset.addIdProperty().index();
asset.addStringProperty("backendId").index();
asset.addStringProperty("title");
asset.addStringProperty("description");
asset.addStringProperty("contentType");
asset.addStringProperty("url");
Entity sector = schema.addEntity("Sector");
sector.setSuperclass("Backend");
sector.addIdProperty().index();
sector.addStringProperty("backendId").index();
sector.addStringProperty("title");
sector.addToOne(asset, sector.addLongProperty("asset").getProperty(), "assetId");
// insert test:
DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "greenmodel-db", null);
SQLiteDatabase db = helper.getWritableDatabase();
DaoMaster daoMaster = new DaoMaster(db);
DaoSession daoSession = daoMaster.newSession();
AssetDao assetDao = daoSession.getAssetDao();
SectorDao sectorDao = daoSession.getSectorDao();
Asset asset = new Asset(1l, "12345", "Title", "Description", "type", "url");
assetDao.insert(asset);
Sector sector = new Sector();
sector.setTitle("title");
sector.setBackendId("123");
sector.setAssetId(asset);
sectorDao.insert(sector);
该插入的结果是,“assetId”是资产表的主键,但我需要它是“backendId”。
有任何想法吗?