Har*_*hah 4 android android-database android-room
我正在尝试将房间数据库集成到我的 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]
Run Code Online (Sandbox Code Playgroud)
我的实体(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;
}
}
Run Code Online (Sandbox Code Playgroud)
我的道:
@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();
}
Run Code Online (Sandbox Code Playgroud)
如果我遗漏了什么,请告诉我。
如果我更改List<User>
为List<String>
它可以工作,但如果我们还需要其他详细信息怎么办。
原来的:
// Not working
@Query("SELECT DISTINCT user_name FROM User")
List<User> fetchDistinctUser();
Run Code Online (Sandbox Code Playgroud)
更改:
// Working
@Query("SELECT DISTINCT user_name FROM User")
List<String> fetchDistinctUser();
Run Code Online (Sandbox Code Playgroud)
但是,问题仍然是如何获取其他详细信息?
您可以使用解决此问题 Group By
@Query("SELECT user_name FROM User group by userID")
List<User> fetchDistinctUser();
Run Code Online (Sandbox Code Playgroud)
像上面的例子一样,你会得到不同的用户。
使用以下属性User
:
@Query("SELECT DISTINCT name FROM User")
List<String> fetchDistinctUser();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2171 次 |
最近记录: |