2014-01-13 2 views
0

어떻게 ORMLite에서 열 이름의 이름을 바꿀 수 있습니까?ORMLite의 열 이름을 바꾸는 방법은 무엇입니까?

내가 그 쿼리 SELECT id as _id from some_table

안드로이드 커서 어댑터를 작성하려고하고 열이 id라는 이름이 우리를 필요로 우리가 _idORMLite라는 이름의 컬럼을 가지고 있어야합니다.

이 쿼리를 작성하고이 쿼리에서 Cursor을 반환하려고합니다. 지금까지이 무엇하지만 iterator.

내가 내 질문에 대답 할 생각

java.sql.SQLException: Could not compile this SELECT_RAW statement since the caller is expecting a SELECT statement. Check your QueryBuilder methods.

+0

id 주위의 작은 따옴표가 이상하게 보입니다. 당신은 직선 대신에 각진 '을 가지고 있습니다. 오타가 될 수 있을까요? – NigelK

+0

나는 놀고있는 동안 그것을 넣었습니다, 이것은 ORMLite가하는 것과 당신이 그것을 무시할 수있는 문제가 아닙니다. 그렇지 않으면 오류가 발생하지 않습니다. 내 쿼리가 정확합니다. 나는이 쿼리를 DAO에 적용하고 결과를 얻는 방법을 모른다. –

답변

1

에 쿼리를 전달할 때이 오류가 무엇입니까

Dao<NewsArticle, Long> newsArticleDao = 
     ((SomeApp)mContext.getApplicationContext()).getDAOConnection().getDAO(
      NewsArticle.class); 

QueryBuilder<NewsArticle, Long> query = newsArticleDao.queryBuilder().selectRaw(
     "`id` as `_id`"); 
PreparedQuery<NewsArticle> preparedQuery = query.prepare(); 

CloseableIterator<NewsArticle> iterator = newsArticleDao.iterator(preparedQuery); 

AndroidDatabaseResults results = 
     (AndroidDatabaseResults)iterator.getRawResults(); 
cursor = results.getRawCursor(); 

.

여전히 열의 이름을 바꾸는 방법을 모르지만 문제의 해결책을 찾았습니다.

안드로이드 Custom Adapterid로 열 이름을 필요로하지 않는 사실 _id하지만 ORMLite라는 이름의 컬럼을 필요로, 그 잘못이었다. 열을 id로 표시하기를 원합니다.

내 모델에서 내 ID를 표시했고 이제는 매력처럼 작동합니다.

@DatabaseField(id = true) 
private long _id; 
1
우리가 ORMLite에 열 이름을 바꿀 수 있습니다 어떻게

?

잘 모르겠는데 이름 바꾸기가 무엇을 의미하는지 이해합니다. 나는 당신이 여기서 스키마 변화를 의미한다고 생각하지 않는다. 데이터베이스의 필드 이름을 지정하는 방법에 대해 이야기하고 있습니까? 당신은 할 수 있습니다 :

@DatabaseField(id = true, columnName = "_id") 
private long id; 

ORMLite 열라는 이름의 ID를 가지고 우리를 필요로한다.

어, 아니오. ORMLite는 열 이름이 무엇인지 신경 쓰지 않아야합니다. 어쩌면 안드로이드에 대해 이야기하고 있습니까?

이 쿼리를 작성하고이 쿼리에서 Cursor를 반환하려고합니다.

다른 질문입니까?

java.sql.SQLException : 호출자가 SELECT 문을 기다리고 있으므로이 SELECT_RAW 문을 컴파일 할 수 없습니다. QueryBuilder 메소드를 확인하십시오.

당신이 호출하기 때문에

당신이지고있다 :

newsArticleDao.queryBuilder().selectRaw(...); 

을 그리고 전화 :

query.prepare(); 

javadocs of selectRaw(...)

에서 인용하자면 ...이 켜집니다 Dao.queryRaw (String, String ...)에만 적합한 쿼리) 유형의 명령문.

columnName을 사용하여 열의 이름을 지정하려고한다고 생각합니다. javadocs for @DatabaseField을 보셨습니까? 아니면 online manual에서 '열 이름'을 조회 하시겠습니까?

+0

'Cursor'를 어댑터에 전달할 때 "SELECT id as _id"에 대해 이야기하고있었습니다. 'CursorAdapter'는'_id'를 필요로합니다. 아래에서 내 대답은 (OR 지출) 후에 ORMLite는 열 이름을 id로하지 않아도되지만 ORMLite는 열을 id (id = true)로 표시하기를 원한다고 설명했습니다.). 그래서'_id'라는 이름의 컬럼을 만들고 id = true로 표시했습니다. 그래서'ORMLite'와'CursorAdapter'를 만족시킵니다. 귀하의 설명 주셔서 감사, javadocs 확인합니다. –