2011-10-06 4 views
3

저는 android와 android를 처음 접했고 데이터를 저장하고 queryForId를 사용하여 다시 가져 오려고합니다. 처음에는 잘 작동하지만, 조금만 돌아 다니고 난 후에 ... 나는 클래스에 id 필드가 없다는 예외가 있습니다. 여기 ORMLite가 queryForId를 수행 할 수 없습니다.

클래스

@DatabaseTable(tableName="ForeignData") 
public class ForeignData implements Serializable { 

    private static final long serialVersionUID = 3640428963380696279L; 

    @DatabaseFieldId(generatedId = true) 
    private Integer id; 

    @DatabaseFieldSimple(defaultValue = "") 
    private String name; 

    public ForeignData(){}; 
} 

의 코드이고 이것은 내가 그것을 호출하는 방법입니다 ...

ForeignData f = new ForeignData(); 
try { 
    Dao<ForeignData, Integer> fdao = new DatabaseHelper(getApplicationContext()).getForeignDao(); 
    f.setName("test"); 
    fdao.create(f); 
    f = fdao.queryForId(f.getId())==null?f:fdao.queryForId(f.getId()); 
    txt1.setText(f.getName());     
} catch (SQLException e) { 
    txt1.setText(e.getMessage()); 
} 

그것은 쿼리 할 수있는 수익

f = fdao.queryForId(f.getId())==null?f:fdao.queryForId(f.getId()); 

에서 예외를 잡을 ForeignData에는 id 열이 없으므로 -for-id입니다.

나는

@DatabaseField(generatedId=true,columnName="id") 
private Integer id; 

내가되어 얻을 예외로 ForeignData 클래스의 ID를 변경하는 경우 :

+0

모든 코드를 @GAO 그래서 난 당신이 당신의'onUpgrade' 방법에 대한 올바른 것으로 의심 찾을 보인다. 이것은 확실히 스키마가 일치하지 않는 것처럼 보입니다. 앞으로는 메시지뿐 아니라 스택 추적에서 적어도 두 줄의 버그가 있는지 확인하십시오. – Gray

+0

덕분에 앞으로도 그렇게 할 것입니다. 모든 스택 추적을 보는 데 여전히 익숙하지 않으므로 종종 전혀 보지 않습니다. 버그를 만드는 코드를 확인하십시오. –

답변

-1

시도 "데이터베이스 필드에서 queryForOne은? 'ForeignData' 'ID'= SELECT * FROM" ... 내 databaseHelper에 onUpgrade 기능에 문제가 있다고 생각하기 때문에 문제는 더 이상 관련이 없을 수도 있습니다 .... 작동 ...

을 장치에서 응용 프로그램을 제거하고 다시 실행

0

또 다른 가능성 (동일한 문제가있는 다른 사용자의 경우).

OrmLite는 "구성 파일 모드"로 실행하여 성능을 향상시킵니다. 이 모드를 사용하고 있는지 확인하려면 OrmLiteSqliteOpenHelper 클래스를보고 호출중인 수퍼 생성자의 버전을 확인하십시오. configFileId를 주면이 모드가됩니다.

그런 경우 OrmLiteConfigUtil 클래스를 Java 응용 프로그램으로 실행하여 구성 파일을 생성해야합니다. 이 파일을이 모델을 모델에 대한 진실의 원천으로 사용하기 때문에 (모델 파일에서 런타임시 주석을 검사하지 않기 때문에) 모델 파일 중 하나에 ORM 관련 변경을 할 때마다이 작업을 수행해야합니다.

2

당신은에 ForeignData 클래스의 ID를 변경할 수 있습니다

@DatabaseField(id = true) 
private Integer id; 
관련 문제