Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android DAO查询不适用于最小-最大函数_Android_Sql_Dao_Android Room_Android Jetpack - Fatal编程技术网

Android DAO查询不适用于最小-最大函数

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... }

我已经为我的android应用程序设计了一个房间数据库。我所有的DAO接口方法都在工作,除非我在查询中有一个min/max函数

下面是实体类的模拟:

@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();