Android DAO查询不适用于最小-最大函数
我已经为我的android应用程序设计了一个房间数据库。我所有的DAO接口方法都在工作,除非我在查询中有一个min/max函数 下面是实体类的模拟:Android DAO查询不适用于最小-最大函数,android,sql,dao,android-room,android-jetpack,Android,Sql,Dao,Android Room,Android Jetpack,我已经为我的android应用程序设计了一个房间数据库。我所有的DAO接口方法都在工作,除非我在查询中有一个min/max函数 下面是实体类的模拟: @Entity public class Data { @PrimaryKey @NonNull private String timestamp; @ColumnInfo(name = "item_key") private int itemKey; ...Other stuff... }
@Entity
public class Data {
@PrimaryKey
@NonNull
private String timestamp;
@ColumnInfo(name = "item_key")
private int itemKey;
...Other stuff...
}
这是一个只包含所需部分的类:
public class HeaderData {
private int item_key;
private String timestamp;
public HeaderData(int item_key, String timestamp) {
this.item_key = item_key;
this.timestamp = timestamp;
}
}
这里是DAO接口:
@Dao
public interface LocationDao {
@Insert
void insertSingleRecord(Data data);
@Query("SELECT * FROM Data")
List<LocationData> getEverything();
@Query("SELECT * FROM Data WHERE item_key = :itemKey")
List<Data> getDbData(int itemKey);
// I dont know why this query is not working!
@Query("SELECT item_key, MIN(timestamp) FROM LocationData GROUP BY item_key")
List<HeaderData> getHeaderData();
}
@Dao
公共接口位置DAO{
@插入
void insertSingleRecord(数据);
@查询(“从数据中选择*)
列出getEverything();
@查询(“从数据中选择*,其中item_key=:itemKey”)
列出getDbData(int itemKey);
//我不知道为什么这个查询不起作用!
@查询(“按项目键从LocationData组中选择项目键,最小值(时间戳))
列出getHeaderData();
}
在上一次查询中,
getHeaderData()
的MIN
函数似乎不起作用,我得到了一个标题数据列表,其中包含正确的item\u键
s,但所有的时间戳
s都是null
。有人知道这个问题吗?问题是您返回的pojo与您从数据库中要求的不完全相同:
// I dont know why this query is not working!
@Query("SELECT item_key, MIN(timestamp) FROM LocationData GROUP BY item_key")
List<HeaderData> getHeaderData();
并重新定义查询,如下所示:
@Query("SELECT item_key, MIN(timestamp) as minTimestamp FROM LocationData GROUP BY item_key")
List<HeaderData> getHeaderData();
@Query(“按项键从LocationData组中选择项键,MIN(时间戳)作为minTimestamp”)
列出getHeaderData();
知道如何获得最小值或最大值吗?出于某种原因,我总是得到0,因为函数的返回类型应该是“int”。
@Query("SELECT item_key, MIN(timestamp) as minTimestamp FROM LocationData GROUP BY item_key")
List<HeaderData> getHeaderData();