我有用户包含课程集和U需要得到一个学生注册的课程数。我不希望ti加载学生,因为这会加载整个学生图形对象与其他类似的地址等等。有没有一种方法使用弹簧数据jpa来得到计数。查询弹簧数据jpa计数
1
A
回答
1
您可以添加一个方法,如下面的StudentRepository (假设你的实体学生PK的ID和设置属性名作为课程)
@Query("select size(s.courses) from Student s where s.id=:id")
long countCoursesByStudentId(@Param("id") long id);
另外,您也可以按照以下在CourseRepository添加计数方法(假设以学生,PK和属性名作为课程的多对一关系ID和学生)
long countByStudentId(long id);
1
由于您有N对多关系,因此您可以使用size()
函数获取用户的课程。
public class UserIdCountCourses {
private Long userId;
private Integer countCourses;
public UserIdCountCourses(Long userId, Integer countCources) {
this.userId = userId;
this.countCourses = countCources;
}
public Long getUserId() {
return userId;
}
public Integer getCountCourses() {
return countCourses;
}
}
@Query("select new package.....UserIdCountCourses(u.id , size(u.cources))
from User u group by u.id")
List<UserIdCountCourses> findUserIdAndCountEnrolledCourses();
此外,您可以使用本机查询来仅选择您需要的。本机查询结果为对象的数组,但你可以申请@SqlResultSetMapping名为本地查询等(添加SqlResultSetMapping成实体,或在XML配置文件):
@SqlResultSetMapping(
name="UserIdCountCoursesMapping",
classes={
@ConstructorResult(
targetClass=UserIdCountCourses.class,
columns={
@ColumnResult(name="user_id"),
@ColumnResult(name="count_courses")
}
)
}
)
--just query example
@NamedNativeQuery(name="getUserIdCountCourses", query="SELECT user_id,count (1) FROM user LEFT JOIN cources cu ON user_id=cu.user_id",resultSetMapping="UserIdCountCoursesMapping")
相关问题
- 1. 弹簧数据的JPA查询名称
- 2. 动态查询弹簧数据jpa
- 3. 弹簧数据JPA:如何使JPA标准查询
- 4. 弹簧数据查询
- 5. 弹簧JPA JPQL查询
- 6. Jhipster或弹簧数据JPA
- 7. 休眠弹簧数据Jpa
- 8. 弹簧数据JPA获取
- 9. 查看使用弹簧数据生成的查询 - jpa
- 10. 弹簧引导数据redis集成弹簧数据jpa
- 11. 混合弹簧数据jpa +弹簧数据neo4j。 users服务
- 12. 弹簧数据JPA多个数据源
- 13. 在弹簧数据更新和插入查询jpa
- 14. 弹簧数据Jpa排序查询对象的复杂属性
- 15. 弹簧数据jpa加入本地查询
- 16. 弹簧数据jpa查询字符串错误
- 17. 弹簧数据的JPA查询来限制
- 18. 麻烦弹簧JPA数据原生SQL查询
- 19. 弹簧数据jpa - 在执行前修改查询
- 20. 默认弹簧数据jpa查询的值?
- 21. 分组查询DSL +弹簧数据JPA抛出NoSuchElementException
- 22. 弹簧数据的JPA仓库和冬眠嵌套查询
- 23. 翻译JPA查询谓词弹簧数据规范
- 24. 弹簧数据的JPA查询动态传递where子句
- 25. 弹簧数据JPA,复杂本机查询
- 26. 弹簧数据jpa @枚举类型不返回数据的查询
- 27. 高级弹簧数据查询/ critera
- 28. 通过实例查询弹簧数据
- 29. 弹簧数据查询方法创建
- 30. 弹簧数据mongodb地理查询
您的课程是否也是一个实体?他们之间的关系ManytoMany或ManytoOne?发布实体代码以获得准确答案。 – Ranjeet