spring-data-jpa JPA查找第一个依据是在给定列表中创建

6rqinv9w  于 2022-11-10  发布在  Spring
关注(0)|答案(1)|浏览(235)

我有一个模型类,其中包含以下字段:

class Student {
  Long roleNo;
  Long version;
  Date createdAt;
  Date updateAt;
}

现在,我尝试编写一个JPA查询,在该查询中,我可以传递一个角色编号列表,并且对于每个角色编号,我可以按版本获取最新的记录。
我试过这样做,但我只得到一条记录:

findFirstByRoleNoIn(List<Long> roleNo);
tkclm6bt

tkclm6bt1#

一种方法是使用@Query注解来编写简单的查询。

@Query(nativeQuery = true, value = """ 
            SELECT s.* FROM student s
            INNER JOIN (SELECT
              role_no,
              MAX(version) AS latest
            FROM student GROUP BY role_no) t_version
              ON s.role_no = t_version.role_no
              AND s.version = t_version.latest
            WHERE s.role_no IN (:roleNo)
            """)
    findLatestVersion(@Param("roleNo") List<Long> roleNo);

相关问题