有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java ORMLite如何使用两个日期列进行查询,其中一个为空或小于另一个

我使用的是ORMLite和H2,我有一个名为Student的数据模型,它有“updatedAt”列/属性,这是一种日期数据类型(java.util.Date),所以它也保留了日期时间信息。然后是另一个名为“lastSyncedAt”的日期类型列/属性,我想让所有学生了解:

  1. lastSyncedAt为空,即尚未同步,或
  2. lastSyncedAt小于“updatedAt”

有人能帮我在ORMLite上做这个吗。LARAVEL ORM有一些类似的东西(columnA,比较运算符,columnB)在ORMLite中是否有类似的东西或可以这样做


共 (1) 个答案

  1. # 1 楼答案

    where(columnA, comparison operator, columnB) is there something similar or that can do this in ORMLite.

    你有RTFM吗?关于ORMLite query builder有很多。你可以这样做:

    qb = studentDao.queryBuilder();
    where = qb.where();
    where.or(
        where.isNull("lastSyncedAt"),
        where.lt("lastSyncedAt", new ColumnArg("updatedAt")));
    results = queryBuilder.list();
    

    两件事:

    • 你是如何在H2中存储日期的?这个领域能比不上
    • H2如何处理在不到个小时内比较null值的问题
    • 如果updatedAt是null怎么办

    第一个问题至关重要。H2有一个timestamp type,为了进行比较,需要以特定的格式对日期进行编码。取决于你如何创建你的模式。您还可以使用ORMlite的DATE_LONG type,它将日期存储为一个长整数,当然可以进行比较

    希望这有帮助