Я пытаюсь интегрировать базу данных комнаты в мое приложение для 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();
Но все же проблема в том, как получить другие детали?