比较 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".
之类的查询
我在 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();
鉴于您的评论 UpdatedTime
应设置为 null,表示它尚未更新。然后,您可以执行 "give all records where UpdatedTime is not null".