在greendao的常见问题解答中,它说“从greenDAO开始,对于字符串主键的支持有限”。http://greendao-orm.com/documentation/technical-faq/
我找不到任何地方说明如何做到这一点。
我正在一个服务器应用程序中使用Guid作为我的主键,并希望能够远程从Android设备生成新数据并将其上传回服务器。Android设备上的数据库在sqlite中,并使用greenDAO生成POJO和数据访问层。我使用Guids来避免上传到服务器时出现主键冲突。我将Guids存储为字符串。
在greendao网站上还有一些建议,建议我创建一个包含字符串的辅助字段,并仍然使用greendao喜欢的长主键,但这意味着当我从服务器导入数据到应用程序时,必须重新连接所有数据库关系,这很麻烦。如果可能的话,我更愿意继续使用字符串主键。
有人可以告诉我如何做到这一点吗?
以下是一些示例代码...
在我的生成器中(为了清晰起见,我删除了大部分字段):
在我的Android应用程序中,我从服务器下载所有数据。它基于GUID ID建立关系。我必须将它们重新附加到生成器中创建的int ID上,就像这样:
所以最终我有两套ID将所有内容链接起来,一个是用于GreenDao的int类型,另一个是字符串(guid),在上传到服务器时可正常使用。一定有更简单的方法!
我正在一个服务器应用程序中使用Guid作为我的主键,并希望能够远程从Android设备生成新数据并将其上传回服务器。Android设备上的数据库在sqlite中,并使用greenDAO生成POJO和数据访问层。我使用Guids来避免上传到服务器时出现主键冲突。我将Guids存储为字符串。
在greendao网站上还有一些建议,建议我创建一个包含字符串的辅助字段,并仍然使用greendao喜欢的长主键,但这意味着当我从服务器导入数据到应用程序时,必须重新连接所有数据库关系,这很麻烦。如果可能的话,我更愿意继续使用字符串主键。
有人可以告诉我如何做到这一点吗?
以下是一些示例代码...
在我的生成器中(为了清晰起见,我删除了大部分字段):
private static void addTables(Schema schema)
{
Entity unit = addUnit(schema);
Entity forSale = addForSale(schema);
Property unitIntId = forSale.addLongProperty("unitIntId").getProperty();
forSale.addToOne(unit, unitIntId);
}
private static Entity addForSale(Schema schema)
{
Entity thisEntity = schema.addEntity("ForSale");
thisEntity.addIdProperty();
thisEntity.addStringProperty("forSaleId");
thisEntity.addFloatProperty("currentPriceSqFt");
thisEntity.addStringProperty("unitId");
return thisEntity;
}
private static Entity addUnit(Schema schema)
{
Entity thisEntity = schema.addEntity("Unit");
thisEntity.addIdProperty();
thisEntity.addStringProperty("unitId");
thisEntity.addStringProperty("name");
return thisEntity;
}
在我的Android应用程序中,我从服务器下载所有数据。它基于GUID ID建立关系。我必须将它们重新附加到生成器中创建的int ID上,就像这样:
//Add relations based on GUID relations
//ForSale:Units
for(ForSale forSale:Globals.getInstance().forSales)
{
if (forSale.getUnitId() != null && forSale.getUnit() == null)
{
for(Unit unit:Globals.getInstance().units)
{
if (forSale.getUnitId().equals(unit.getUnitId()))
{
forSale.setUnit(unit);
break; //only need the first one
}
}
}
}
所以最终我有两套ID将所有内容链接起来,一个是用于GreenDao的int类型,另一个是字符串(guid),在上传到服务器时可正常使用。一定有更简单的方法!