如何使用Spring数据jpa @Query注释直接获取学生列表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Spring数据jpa @Query注释直接获取学生列表相关的知识,希望对你有一定的参考价值。
我有两个实体:Group和Student是ManyToMany关系,Group是所有者。
现在定义一个从JpaRepository扩展的GroupRepository,并希望使用@Query注释声明一个方法,直接获取给定GroupId的Student列表。怎么样?
方法返回值应该是List或Page,不知道如何使用查询语言定义。
我知道如何让一个Group实体急切地获取该组的所有学生,如下所示:
@Query("select group from Group group left join fetch group.students where group.id=:id")
Group findOneWithEagerRelationships(@Param("id") Long id);
非常感谢任何帮助。
答案
如果您有这样的模型:
@Entity
class Group {
@Id Ling id;
@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
private List<Student> students;
//...
}
@Entity
class Student {
@Id Long id;
@ManyToMany(mappedBy = "groups")
private List<Group> groups;
//...
}
然后,为了让所有学生通过组回购,您可以制作这样的方法:
interface GroupRepo extends JpaRepository<Group, Long> {
@Query("select s from Group g join g.students s where g.id = ?1")
Page<Student> getAllStudentsByGroupId(Long groupId, Pageable pageable);
}
以上是关于如何使用Spring数据jpa @Query注释直接获取学生列表的主要内容,如果未能解决你的问题,请参考以下文章
使用 Spring Data JPA 和 @Query 注释仅获取第一个/最后一个元素
如何更新 Spring Data JPA @Modifying @Query 查询中的 JPA/Hibernate @Version 字段?
是否可以在 Spring Data JPA Repository 的 @Query 注释中使用 PostgreSQL 匿名块(PL/pgSQL)?
我可以在 Spring Data JPA 存储库方法中将 @Query 定义与规范结合起来吗?