Номер базы данных отличное значение - PullRequest
0 голосов
/ 22 мая 2019

Я пытаюсь интегрировать базу данных комнаты в мое приложение для Android. Теперь я хочу запросить отдельный результат из БД, но я получаю эту ошибку:

error: The columns returned by the query does not have the fields [id] in com.abc.def.model.User even though they are annotated as non-null or primitive. 
    Columns returned by the query: [user_name]

Моя сущность (здесь не копируют Getter и Setter):

@Entity
public class User {
     @PrimaryKey(autoGenerate = true)
        @NonNull
        @ColumnInfo(name = "id")
        private Integer id;

        @ColumnInfo(name = "user_name")
        @NonNull
        private String name;

        @ColumnInfo(name = "email")
        private String email;

        public User(String name, String email) {
            this.name = name;
            this.email = email;
        }
    }

Мой Дао:

@Dao
public interface UserDao {
    @Insert
    void insertAll(User... users);

    // Not working
    @Query("SELECT DISTINCT user_name FROM User")
    List<User> fetchDistinctUser();

    // Working
    @Query("SELECT * FROM User")
    List<User> fetchAllUser();
}

Дайте мне знать, если я что-то упустил.

Если я изменил List<User> на List<Sttring>, это работает, но что делать, если нам нужны другие детали.

Оригинал:

// Not working
  @Query("SELECT DISTINCT user_name FROM User")
  List<User> fetchDistinctUser();

Изменено:

// Working
  @Query("SELECT DISTINCT user_name FROM User")
  List<String> fetchDistinctUser();

Но все же проблема в том, как получить другие детали?

1 Ответ

0 голосов
/ 22 мая 2019

Использовать свойство от User:

@Query("SELECT DISTINCT name FROM User")
List<String> fetchDistinctUser();
...