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

ORMLite how to query using two date columns where one is null or less than another

我正在使用 ORMLite 和 H2,我有一个名为 Student 的数据模型,它有 "updatedAt" column/property 这是一种日期数据类型 (java.util.Date),所以它保持日期时间信息太。然后是另一个名为 "lastSyncedAt" 的日期类型的 column/property,我想让所有学生都位于:

  1. lastSyncedAt 为空,即尚未同步,或者
  2. lastSyncedAt 小于 "updatedAt"。

有人可以帮助我了解如何在 ORMLite 上执行此操作。 LARAVEL ORM 有类似 where(columnA, comparison operator, columnB) 的东西,在 ORMLite 中是否有类似的东西或者可以做到这一点。

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 中存储你的日期?该字段是否可以与 less-than 进行比较?
  • H2 如何处理比较 less-than 中的 null 值。
  • 如果 updatedAt 是 null 怎么办。

第一个问题很关键。 H2 有一个 timestamp type and for the comparison to work, the date needs to be encoded with it in a specific format. Depends on how you created your schema. You could also use ORMlite's DATE_LONG type,它将日期存储为 long-integer,当然可以进行比较。

希望对您有所帮助。