Jhipster 存储库自定义@Query

Jhispter Repository Custom @Query

我的数据库中有 2 个表,ProfesorInfoStudentInfo 是一对多关系。我想构建一个自定义查询,以获取与某个教授有关系的所有学生,给定教授的 ID。 像 :

@SuppressWarnings("unused")
@Repository
public interface StudentInfoRepository extends JpaRepository<StudentInfo, Long> {

    @Query("SELECT * FROM StudentInfo WHERE ProfesorID = profesorId")
    List<StudentInfo> findAllByProfesorID(Long profesorId);

@Query 似乎不起作用。为什么会这样,我怎样才能让它发挥作用?

我认为您没有正确使用查询参数,它应该看起来像这样:

import org.springframework.data.repository.query.Param;
... 
@SuppressWarnings("unused")
@Repository
public interface StudentInfoRepository extends JpaRepository<StudentInfo, Long> {

    @Query("SELECT s FROM StudentInfo s WHERE s.ProfesorID = :profesorId")
    List<StudentInfo> findAllByProfesorID(@Param("profesorId") Long profesorId);

冒号告诉 JPA 下一个单词是一个变量,应该用同名的 @Param 的值替换。

想象一下 @Query 必须直接在 Java 对象中导航、加载和过滤实体。我这样说是因为您的字段名称 ProfesorID 以大写 'P' 开头看起来很奇怪。如果这个字段在你的 java 实体中被命名为 profesorID 那么当你想在 jpa 查询中访问它时它应该被命名为相同的。

如果您想了解更多相关信息,here 是一个很好的示例指南。