求对应指定SQL查询语句的JPA方法名称
对应SQL的JPA实现方法
你可以通过两种常见方式实现这条SQL的JPA查询:
1. Spring Data JPA方法名自动生成查询
直接通过符合命名规范的方法名,让框架自动生成对应SQL,无需手动编写查询语句。假设你的实体类为Topic,对应的Repository接口方法如下:
List<Topic> findByIsDeletedFalseAndSkillIdOrderByDisplayOrderAsc(Long skillId);
说明:
findBy是查询前缀,后面跟着条件:IsDeletedFalse对应is_deleted = false,AndSkillId对应skill_id = :skillIdOrderByDisplayOrderAsc对应ORDER BY display_order ASC
2. 使用@Query注解手动定义查询
如果需要更灵活的控制,也可以用@Query注解直接编写JPQL或原生SQL:
方式一:JPQL查询(推荐,面向实体而非数据库表)
假设实体类Topic中,数据库字段is_deleted映射为isDeleted,skill_id映射为skillId,display_order映射为displayOrder:
@Query("SELECT t FROM Topic t WHERE t.isDeleted = false AND t.skillId = :skillId ORDER BY t.displayOrder ASC") List<Topic> getTopicsBySkillId(@Param("skillId") Long skillId);
方式二:原生SQL查询
如果要直接复用原SQL结构,可以开启原生SQL支持:
@Query(value = "SELECT * FROM topic WHERE is_deleted = false AND skill_id = :skillId ORDER BY display_order ASC", nativeQuery = true) List<Topic> getTopicsBySkillIdNative(@Param("skillId") Long skillId);
内容的提问来源于stack exchange,提问作者John Doe
相关产品推荐
相关产品推荐

