使用 JPA 列出与约束集合匹配的元素

发布于 2025-01-10 03:14:56 字数 851 浏览 0 评论 0原文

我在 PostgreSQL 中有一个这样定义的实体(http://sqlfiddle.com/#!17/ e5a2ec/1):

create table foo (
  id bigint primary key,
  code varchar(4) not null,
  label varchar(255) not null,
  from_date date not null,
  to_date date null,
  unique (code, from_date)
);

我可以使用本机 PostgreSQL 查询来获取与 code 集合匹配的最高级元素(最大 from_date

select f1.* 
from 
  foo f1,
  (select code, max(from_date) max_from_date from foo where code in ('a', 'b', 'c') group by code) f2
where f1.code = f2.code and f1.from_date = f2.max_from_date;

......但我不能使用 CriteriaQuery 或 JPQL 创建类似的查询。

我的问题是我知道子查询只能在 ̀where子句中使用,不能使用multiselect`。

I have an entity defined like this in PostgreSQL (http://sqlfiddle.com/#!17/e5a2ec/1):

create table foo (
  id bigint primary key,
  code varchar(4) not null,
  label varchar(255) not null,
  from_date date not null,
  to_date date null,
  unique (code, from_date)
);

I can get the most advanced elements (with max from_date) matching a collection of code using native PostgreSQL query...

select f1.* 
from 
  foo f1,
  (select code, max(from_date) max_from_date from foo where code in ('a', 'b', 'c') group by code) f2
where f1.code = f2.code and f1.from_date = f2.max_from_date;

...but I'm not able to create a similar query using CriteriaQuery or JPQL.

My problem is I understood subqueries can only be used in ̀whereclause and cannot usemultiselect`.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文