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

时间:2012-01-16 13:22:59

标签: android ormlite

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

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

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

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

statDao.deleteById(statClassInstance.getUUID());

编译器给我一个错误:

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

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

1 个答案:

答案 0 :(得分:6)

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

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

希望这会有所帮助