当前位置: 首页 > 面试题库 >

JPA为每个项目选择最新实例

邢同
2023-03-14
问题内容

假设我有一个会议实体。每个会议都有一个与会者和一个会议日期。在我的会议表中,我可能会为每个与会者召开多个会议,每个会议的日期都不同。我需要一个JPA查询,该查询将仅为所有与会者选择最新的会议。例如,如果我的桌子看起来像这样

Meeting ID | Attendee ID | Meeting Date
1          | 1           |  6/1/2011
2          | 2           |  6/1/2011
3          | 1           |  6/6/2011
4          | 3           |  6/6/2011

我的结果应该是

Meeting ID | Attendee ID | Meeting Date
2          | 2           |  6/1/2011
3          | 1           |  6/6/2011
4          | 3           |  6/6/2011

针对postgres使用JPA
2。会议有1-1个出席者和一个简单的时间戳记日期。我怀疑我需要和max(blah)做一个小组,也许还需要加入我自己的行列,但是我不确定解决此问题的最佳方法。

更新: 在花了一个晚上玩这个游戏之后,我仍然没有一个可接受的JPQL解决方案。这是我到目前为止的内容:

select m from Meeting m 
where m.meetingDate in 
    ( select max(meet.meetingDate) 
      from Meeting meet group by meet.attendee )

我还有其他与此条件无关的其他条件,例如按出席者部门进行过滤等。这项工作奏效的唯一原因是因为我们将会议日期追溯到第二次(或更晚),并且几乎完全同时召开两次会议的可能性很小。我们在周围放置了一些Java东西,以防每个与会者仅召开最后一次会议,以防万一我们同时获得两个,但这是一个非常糟糕的解决方案。在查询中将其全部获取并不是很困难,但是我还没有弄清楚。

Update2: 添加sql标记是因为如果我需要使用sql创建视图并创建JPA对象以映射到该视图,我可以。


问题答案:

我想我已经有了这个查询。

select m from Meeting m 
    where m.meetingDate = 
        (select max(m1.meetingDate) 
            from Meeting m1 
            where m1.attendee = m.attendee )
    and not exists 
        (select m2 from Meeting m2 
            where m2.attendee = m.attendee 
            and m2.meetingDate > m.meetingDate)


 类似资料:
  • 问题内容: 我有一个项目数据库。每个项目都按类别表中的类别ID进行分类。我正在尝试创建一个列出每个类别的页面,并在每个类别下方显示该类别中的4个最新项目。 例如: 宠物用品 宠物食品 我知道我可以通过查询数据库来轻松解决此问题,如下所示: 然后遍历该数据并查询数据库中的每个类别以获取最新的项目: 我要弄清楚的是,我是否可以仅使用1个查询并获取所有这些数据。我有33个类别,因此我认为这可能有助于减少

  • 问题内容: 我经营一个网站,用户可以在其中发布项目(例如图片)。这些项目存储在MySQL数据库中。 我想查询最后十个发布项目,但任何单个用户最多只能约束3个项目。 最好的方法是什么?我的首选解决方案是对SQL查询施加约束,以请求最后十项。但是非常欢迎有关如何设置数据库设计的想法。 提前致谢! BR 问题答案: 使用关联的子查询非常容易: 该查询假定以后添加了较大的均值 相关子查询是一个强大的工具!

  • 问题内容: 我的数据如下所示: 我要完成的工作是按类别获取最新的2个条目(按insertdate DESC的顺序排列),因此结果应为: 使用获取最新消息很容易,但是如何在不启动多个查询的情况下获取最新2? 感谢您的帮助;-) S. 问题答案: 在这里,你哥们!

  • 我正在寻找一种简单的方法来选择熊猫数据框df中的特定值。 我的df行如下所示:编辑以使其更清晰 我的目标是选择每一行[1](df[索引])与一个新的索引。所以这是df.index0,8,以此类推... 是否有另一种可能的方法,而不是迭代整个df并检查行[1](df[索引])上的索引的更改? 我知道有一种方法可以像这样选择第n行:df.iloc[0::n,:]但是第[1]行上的索引更改(df[“in

  • 问题内容: 我有这张表 language_id是指记录所用的语言。我想做的是检索 每个language_id中 最近的五个记录(ORDER BY time_posted DESC LIMIT 5)的列表。我可以使用许多不同的SQL查询在PHP中循环执行此操作,但我觉得有一种更简单的方法。 我必须得到一本有关SQL的书,哈哈。 谢谢。 问题答案: 这是我在MySQL中解决此“每组前N个”类型的查询的

  • 问题内容: 我目前有一个应用程序,其主要性能问题是使用由JSON响应组成的基于文件的数据库。 我想重写我的应用程序以使用SQLite数据库功能。 由于我很懒,所以我想使用某种ORM。 到目前为止,我只发现了两个大型ORM库: ORMLite greendao-ORM DB4O ActiveAndroid 我的主要目标是尽可能 提高数据处理性能 但是我发现这些库有两个可能的问题。 ORMLite使用