在ORMLite中使用UUID作为id(Android)

tmo*_*use 1 android ormlite

我已经使用ORMLite成功创建了表,看起来它正确地将uuid列添加为主键,索引等.

public class Stat {
    @DatabaseField(id = true)
    protected UUID uuid = UUID.randomUUID();
...
Run Code Online (Sandbox Code Playgroud)

现在,我希望能够使用提供的DAO的全部功能并执行(Stat是我的类要保持,getUUID()返回UUID):

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

statDao.deleteById(statClassInstance.getUUID());
Run Code Online (Sandbox Code Playgroud)

编译器给我一个错误:

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

我缺少的是如何在接受整数的deleteById等方法中使用UUID ID.我已经读过UUID作为ID被合并到ORMLite中,但没有提到它是否只是使它们成为主键,而不支持所有这些辅助方法(queryForId,deleteIds)等.

Ser*_*ner 6

为了使用deleteById(ID)方法,Dao<T,ID>应该使用在T类中识别的相应参数进行相应的创建.ID将被解释为您在T类中定义的任何类型作为主键.在这种特殊情况下,它是UUID类型,并查看DAO已使用创建的异常Dao<Stat, Integer>,应该按如下方式创建:

 Dao<Stat, UUID> statDao = DaoManager.createDao(connSource, Stat.class);
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助