2013-03-21 3 views

답변

10

Dao 개체는 개체와 관련된 아이디의 유형을 적용 할 제네릭을 사용합니다.

Dao<Account, Integer> accountDao = getDao(Account.class); 

첫 번째 제네릭 매개 변수는 개체와 두 번째 제네릭 매개 변수의 유형을 지정의 유형을 지정합니다 : 당신은 단지 다음 dao.queryForId(...)에 정수를 전달하는 옵션이 표시되면 당신은 아마, 실수로, 같은 DAO를 정의 그 엔티티의 ID 필드. Integer을 사용하면 accountDao.queryForId(Integer)으로 전화 할 것입니다. @Tomas가 언급 한 바와 같이

, 당신은 같은 것을 사용하여 DOA를 정의해야

Dao<Account, String> accountDao = getDao(Account.class); 

그런 다음 당신이 String ID로 Account에 대해 조회 할 수 있습니다

Account account = accountDao.queryForId("John Smith"); 
+0

감사합니다! 그게 내 문제를 해결해 줬어. – Eli

3

먼저 엔티티 ID는 문자열 유형이 무엇인지 정의해야합니다 :

@DatabaseTable() 
public class Account { 

    @DatabaseField(id = true) 
    private String mFullName; 
    ... 
} 

그런 다음 당신은 그것의 ID 유형 개미 개체 유형에 따라 다오 객체를 선언해야합니다. 지금 당신은 문자열의 ID 유형으로 queryForId 사용할 수 있습니다

Dao<Account, String> accountDao = getAccountDao(); 
Account account = accountDao.queryForId("John Smith"); 
if (account == null) { 
    // the name "John Smith" does not match any rows 
} 
관련 문제