我已经使用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)等。
答案 0 :(得分:6)
为了使用deleteById(ID)方法,应该使用在T类中识别的相应参数相应地创建Dao<T,ID>
。 ID将被解释为您在T类中定义的任何类型作为主键。在这种特殊情况下,它是UUID类型,并查看使用Dao<Stat, Integer>
创建DAO的异常,并且应该按如下方式创建:
Dao<Stat, UUID> statDao = DaoManager.createDao(connSource, Stat.class);
希望这会有所帮助