小编Bob*_*byG的帖子

greendao字符串主键 - 如何使用

在greendao常见问题解答中,它说"从greenDAO开始,对String主键的支持有限." http://greendao-orm.com/documentation/technical-faq/

我找不到任何说明如何做到这一点.

我使用Guids作为服务器应用程序中的主键,并希望能够从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;
}
Run Code Online (Sandbox Code Playgroud)

在我的Android应用程序中,我从服务器下载所有数据.它具有基于GUID id的关系.我必须将这些重新连接到我在生成器中创建的int Id,如下所示:

            //Add relations based on GUID relations

            //ForSale:Units
            for(ForSale forSale:Globals.getInstance().forSales) 
            {
                if (forSale.getUnitId() != null && …
Run Code Online (Sandbox Code Playgroud)

orm android greendao

6
推荐指数
1
解决办法
5044
查看次数

Docker 容器日期/时间与主机 PC 完全不同

当我在我的 PC 上运行 docker 容器时,它的日期/时间与主机 PC 完全不同。请参阅下面的命令。容器recognizerDev上的时间是前一天,不同小时,不同分钟到主机。知道发生了什么吗?

PS C:\Users\Bobby> date
11 October 2016 19:51:38

PS C:\Users\Bobby> docker exec recognizerDev date
Mon Oct 10 21:43:54 UTC 2016
Run Code Online (Sandbox Code Playgroud)

当我尝试在 AWS linux 主机上运行相同的东西时,日期/时间是正确的,除了由于时区导致的 1 小时差异。

请注意,根据我的 PC,第一个命令以 UTC+1(伦敦)返回正确的时间/日期。第二个命令说它是 UTC 但这不可能是正确的,好像它会在 1 小时内返回相同的结果。

time date docker

6
推荐指数
1
解决办法
1万
查看次数

如何在不更改上次修改日期的情况下上传/下载到 S3?

我想使用 boto3 将文件上传和下载到 S3,而不更改它们的“LastModified”日期,以便我可以密切关注内容的年龄。每当我上传或下载文件时,它都会采用此操作的日期,而我丢失了修改内容的日期。

我正在查看文件的时间戳

fileObj.get('LastModified')
Run Code Online (Sandbox Code Playgroud)

其中 fileObj 取自分页器结果。我正在使用以下命令上传

s3Client.upload_fileobj(data, bucket_name, destpath)
Run Code Online (Sandbox Code Playgroud)

以及以下下载文件:

s3Client.download_file(bucket_name, key, localPath)
Run Code Online (Sandbox Code Playgroud)

如何停止上次修改日期的更改?

amazon-s3 boto amazon-web-services boto3

4
推荐指数
1
解决办法
1780
查看次数

NSPredicate isKindOfClass仅适用于[myObject类]而不适用于[MyClass类]

为什么[MyClass class]在谓词中找不到我想要的类的对象却[myObject class]有效呢?请参阅下面的代码示例 我希望能够在一个集合中找到MyClass类型的对象,而不需要有可用的类的虚假实例.

MyClass* myObject = [[MyClass alloc] init];
Run Code Online (Sandbox Code Playgroud)

这不起作用......

NSPredicate* predicate = [NSPredicate predicateWithFormat:@"self isMemberOfClass: %@", [MyClass class]];
NSArray* predicateResults = [mySet filteredSetUsingPredicate:predicate].allObjects;
Run Code Online (Sandbox Code Playgroud)

这确实有效......

NSPredicate* predicate = [NSPredicate predicateWithFormat:@"self isMemberOfClass: %@", [myObject class]];
NSArray* predicateResults = [mySet filteredSetUsingPredicate:predicate].allObjects;
Run Code Online (Sandbox Code Playgroud)

class objective-c nspredicate ios

2
推荐指数
1
解决办法
3395
查看次数