Pergunta

Criei com sucesso uma tabela com ORMLite, onde parece que adicionou corretamente a coluna uuid como uma chave primária, índice, etc.

public class Stat {
    @DatabaseField(id = true)
    protected UUID uuid = UUID.randomUUID();
...

Agora, gostaria de poder usar todo o poder do DAO fornecido e fazer (Stat é minha classe a ser persistida, getUUID () retorna UUID):

Stat statClassInstance = new Stat();
RuntimeExceptionDao<Stat, Integer> statDao = getHelper().getStatDataDao();

statDao.deleteById(statClassInstance.getUUID());

O compilador está apresentando um erro:

The method deleteById(Integer) in the type RuntimeExceptionDao<Stat,Integer> is not applicable for the arguments (UUID)

O que estou perdendo é como usar IDs de UUID em métodos como deleteById , que aceita inteiros. Eu li que UUID como ID foi incorporado ao ORMLite, mas nenhuma menção se foi apenas ao ponto de permitir que eles fossem chaves primárias, não suportando todos aqueles métodos auxiliares (queryForId, deleteIds) etc.

Foi útil?

Solução

Para usar o método deleteById (ID), o Dao<T,ID> deve ser criado de acordo com os parâmetros correspondentes que foram identificados em sua classe T.O ID será interpretado como qualquer tipo que você definir em sua classe T como uma chave primária.Neste caso particular, é o tipo UUID e, olhando para a exceção, o DAO foi criado usando Dao<Stat, Integer> e deveria ter sido criado da seguinte forma:

 Dao<Stat, UUID> statDao = DaoManager.createDao(connSource, Stat.class);

espero que isso ajude

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top