greendao string chaves primárias - como usar

No FAQ do greendao, diz "A partir do greenDAO, há suporte limitado para as chaves primárias do String".http://greendao-orm.com/documentation/technical-faq/

Eu não consigo encontrar em qualquer lugar que diz como fazer isso.

Eu estou usando Guids como minha chave primária em um aplicativo de servidor e quero ser capaz de gerar novos dados remotamente a partir de um dispositivo Android e enviá-lo de volta para o servidor. O banco de dados no dispositivo Android está em sqlite e usa o greenDAO para gerar POJOs e camada de acesso a dados. Eu estou usando Guids para evitar colisões de chave primária quando os dados são enviados para o servidor. Eu estou armazenando os Guids como seqüências de caracteres.

Há mais alguns conselhos sobre o site greendao que dizem que eu deveria criar um campo secundário segurando a string e ainda usar a chave primária longa favorecida pelo greendao, mas isso significa que eu tenho que reconectar todos os meus relacionamentos de banco de dados quando eu importar dados do servidor para o aplicativo que é uma dor. Preferiria apenas continuar a usar as chaves primárias da cadeia se isso for possível.

Alguém pode me dizer como fazer isso?

Aqui está algum código de exemplo ...

No meu gerador (eu removi a maioria dos campos para maior clareza):

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;
}

Na minha aplicação android eu baixar todos os dados do servidor. Tem relacionamentos baseados nos IDs do GUID. Eu tenho que recolocá-los para os id's que eu criei no gerador assim:

            //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
                        }
                    }
                }
            }

Então eu acabo tendo dois conjuntos de Ids ligando tudo, o int para o greendao e o string (guid) que funciona quando é enviado de volta para o servidor. Deve ser um jeito mais fácil!

questionAnswers(1)

yourAnswerToTheQuestion