在文档中提到了以下内容:
Account account = accountDao.queryForId("John Smith");
if (account == null) {
// the name "John Smith" does not match any rows
}
但是在Eclipse(android)中我只看到传递整数作为参数的选项? 有什么帮助吗?
答案 0 :(得分:10)
Dao
个对象使用泛型来强制执行与您的实体关联的ID类型。如果你只看到将整数传递给dao.queryForId(...)
的选项那么你可能错误地定义了dao:
Dao<Account, Integer> accountDao = getDao(Account.class);
第一个泛型参数指定实体的类型,第二个泛型参数指定该实体中ID字段的类型。使用Integer
,您将调用accountDao.queryForId(Integer)
。
正如@Tomas所提到的,你需要用以下内容来定义你的DOA:
Dao<Account, String> accountDao = getDao(Account.class);
然后,您可以通过Account
ID:
String
Account account = accountDao.queryForId("John Smith");
答案 1 :(得分:3)
首先,您应该定义哪些实体ID是String类型:
@DatabaseTable()
public class Account {
@DatabaseField(id = true)
private String mFullName;
...
}
然后你应该根据实体类型和它的ID类型声明Dao对象。现在,您可以使用ID类型为String的queryForId:
Dao<Account, String> accountDao = getAccountDao();
Account account = accountDao.queryForId("John Smith");
if (account == null) {
// the name "John Smith" does not match any rows
}