比较 Hibernate Criteria 中的两列

Comparing two columns in Hibernate Criteria

我在 Postgre 数据库中有一个 table。 table 有 2 个时间戳格式列。我需要那些一列时间戳不等于第二列时间戳的行。

对于下面的查询,我需要 Hibernate 条件限制。

select * 来自 A,其中 column1<>column2

你试过类似的东西吗?

CriteriaBuilder builder = entityManager.getCriteriaBuilder();
CriteriaQuery<Foo> cQuery = builder.createQuery(Foo.class);
Root<Foo> from = cQuery.from(Foo.class);
CriteriaQuery<Foo> select = cQuery.select(from);
select.where(builder.notEqual(from.get("col1"), from.get("col2")));
List<Foo> result = entityManager.createQuery(select).getResultList();

鉴于您的评论 ,您必须进行完整的 table 扫描,这会给更大的 table 带来麻烦。您可能需要完全改变您的方法,并引入一个类似于 "IsUpdated" 的字段。或者,在创建该记录时,UpdatedTime 应设置为 null,表示它尚未更新。然后,您可以执行 "give all records where UpdatedTime is not null".

之类的查询