使用@Query返回JpaRepository中的字符串列表



我有一个包含ListlectureFileNames。我想通过讲座id提取这个列表。这是我的查询:

@Query("SELECT lecture.lectureFileNames FROM Lecture lecture WHERE lecture.id = :lectureId")
List<String> getLectureFiles(@Param("lectureId") Long id);

问题是Hibernate抛出一个异常:

Caused by: java.lang.IllegalArgumentException: org.hibernate.QueryException: not an entity [SELECT lecture.lectureFileNames FROM x.y.z.model.Lecture lecture WHERE lecture.id = :lectureId]

我知道我可以使用@Query提取字段的值,但现在我不知道为什么这不起作用。

你必须加入集合:

@Query("SELECT f FROM Lecture lecture JOIN lecture.lectureFileNames f WHERE lecture.id = :lectureId")
List<String> getLectureFiles(@Param("lectureId") Long id);

有一种方法可以检索查询的元素。使用界面的投影。看看这个链接https://www.baeldung.com/spring-data-jpa-projections

最新更新