Java 如何获取MIN(日期)。使用DAO查询?
我不熟悉安卓房间数据库。 我看到在这个话题上也有类似的问题,但我真的不明白到底是什么对这个话题起作用。 所以,这里我试图从表中获取第一个日期,但是当我用它进行查询时Java 如何获取MIN(日期)。使用DAO查询?,java,android-studio,android-sqlite,android-room,dao,Java,Android Studio,Android Sqlite,Android Room,Dao,我不熟悉安卓房间数据库。 我看到在这个话题上也有类似的问题,但我真的不明白到底是什么对这个话题起作用。 所以,这里我试图从表中获取第一个日期,但是当我用它进行查询时 @Query("select min(date) from user_items where userId = :userId ") long getFirstDate(long userId); 我得到的结果是因为最短日期是01/01/1970 但是我希望表中的第一个日期显示给用户 我的实体类User.java: @Entity
@Query("select min(date) from user_items where userId = :userId ")
long getFirstDate(long userId);
我得到的结果是因为最短日期是01/01/1970
但是我希望表中的第一个日期显示给用户
我的实体类User.java
:
@Entity(tableName = "users")
public class User {
@PrimaryKey(autoGenerate = true)
private int id;
private String name;
private String email;
private String password;
private String securityAnswer;
// other staff here
}
@Entity(tableName = "user_items", indices = {@Index("userId")}, foreignKeys = @ForeignKey(entity = User.class,
parentColumns = "id",
childColumns = "userId",
onDelete = CASCADE))
public class UserItems {
@PrimaryKey(autoGenerate = true)
private int id;
private String category;
private String amount;
private String date;
@ColumnInfo(name = "userId")
private int userId;
// setter and getter
}
我的另一个实体与用户
表有关系
UserItem.java
:
@Entity(tableName = "users")
public class User {
@PrimaryKey(autoGenerate = true)
private int id;
private String name;
private String email;
private String password;
private String securityAnswer;
// other staff here
}
@Entity(tableName = "user_items", indices = {@Index("userId")}, foreignKeys = @ForeignKey(entity = User.class,
parentColumns = "id",
childColumns = "userId",
onDelete = CASCADE))
public class UserItems {
@PrimaryKey(autoGenerate = true)
private int id;
private String category;
private String amount;
private String date;
@ColumnInfo(name = "userId")
private int userId;
// setter and getter
}
除了min(date)
函数之外,我的其他所有查询都运行良好
查询返回UNIX纪元的开始(1970年1月1日),这表明您可能在其中一行的日期列中保留(或试图保留)了无效值。您可能希望检查date列中是否存在任何可疑值。查询返回UNIX纪元的开始(1970年1月1日),这表明您可能已在其中一行的date列中保留(或试图保留)了无效值。您可能需要检查日期列中是否存在任何可疑值。最后我得到了解决方案: 我在这里更改我的查询
与此相反:
@Query("select min(date) from user_items where userId = :userId ")
long getFirstDate(long userId);
使用此选项:@Query("select min(date) from user_items where userId = :userId ")
String getFirstDate(long userId);
因为如果您查看我的UserItem.java
类,这里我将数据存储为String
因此,如果我想将字符串存储到long
类型中,那么它是不允许的
希望它能帮助你。最后我得到了解决方案: 我在这里更改我的查询
与此相反:
@Query("select min(date) from user_items where userId = :userId ")
long getFirstDate(long userId);
使用此选项:@Query("select min(date) from user_items where userId = :userId ")
String getFirstDate(long userId);
因为如果您查看我的UserItem.java
类,这里我将数据存储为String
因此,如果我想将字符串存储到long
类型中,那么它是不允许的
希望它能帮助你