1

3つの列[名前、ID、住所]を含む1つのテーブル「会社」があります。しかし、「名前」列の値のみを取得したい。私はこのようにやっています

Dao<Company, String> dao = getDBHelper().getCompanyDao();

QueryBuilder<Company, String> queryBuilder = dao.queryBuilder();
queryBuilder.orderBy(Company.USERNAME_FIELD_NAME, true);
**queryBuilder.selectColumns("name");**
PreparedQuery<Company> preparedQuery = queryBuilder.prepare();
CloseableIterator<Company> iterator = dao.iterator(preparedQuery);
 AndroidDatabaseResults results = (AndroidDatabaseResults) iterator.getRawResults();
Cursor cursor = results.getRawCursor();

しかし、「queryBuilder.selectColumns("name")」を追加すると、アプリケーションがクラッシュします。データを埋めるためにcursoradapterを使用しているので、カーソルが必要です。

クラッシュログはここにあります:

java.lang.NullPointerException
    at com.j256.ormlite.stmt.QueryBuilder.appendFieldColumnName(QueryBuilder.java:593)
    at com.j256.ormlite.stmt.QueryBuilder.appendColumns(QueryBuilder.java:585)
    at com.j256.ormlite.stmt.QueryBuilder.appendStatementStart(QueryBuilder.java:405)
    at com.j256.ormlite.stmt.StatementBuilder.appendStatementString(StatementBuilder.java:122)
    at com.j256.ormlite.stmt.StatementBuilder.buildStatementString(StatementBuilder.java:106)
    at com.j256.ormlite.stmt.StatementBuilder.prepareStatement(StatementBuilder.java:74)
    at com.j256.ormlite.stmt.QueryBuilder.prepare(QueryBuilder.java:98)
4

1 に答える 1

0

しかし、「queryBuilder.selectColumns("name")」を追加すると、アプリケーションがクラッシュします。

わお。これは非常に巧妙で長期にわたるバグです。ID フィールドを持たないエンティティから列を選択しようとするたびに発生します。このバグレポートを追加しました:

https://sourceforge.net/p/ormlite/bugs/162/

これはトランクで修正されており、4.49 で修正されます。ここでチェックインです。

https://github.com/j256/ormlite-core/commit/ee95883040a3618a1d455b44f6bfd6935a8d4ec7

于 2013-12-20T15:42:05.083 に答える