Jhipster 存储库自定义@Query
Jhispter Repository Custom @Query
我的数据库中有 2 个表,ProfesorInfo
和 StudentInfo
是一对多关系。我想构建一个自定义查询,以获取与某个教授有关系的所有学生,给定教授的 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 是一个很好的示例指南。
我的数据库中有 2 个表,ProfesorInfo
和 StudentInfo
是一对多关系。我想构建一个自定义查询,以获取与某个教授有关系的所有学生,给定教授的 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 是一个很好的示例指南。