Java 如何使用JPA@query注释定义自定义查询
如何使用JPAJava 如何使用JPA@query注释定义自定义查询,java,spring,jpa,Java,Spring,Jpa,如何使用JPA@Query符号?我希望运行查询: 选择区域,赢家\u计数 来自美国地区 何处奖励_id=? 按地区排序 我拥有存储库: public interface AwardsRegionsRepository extends JpaRepository<AwardRegion,AwardRegionPk>{ List<AwardRegion> findAllByOrderByAwardRegionPk_RegionAscSortKeyAsc();
@Query
符号?我希望运行查询:
选择区域,赢家\u计数
来自美国地区
何处奖励_id=?
按地区排序
我拥有存储库:
public interface AwardsRegionsRepository extends JpaRepository<AwardRegion,AwardRegionPk>{
List<AwardRegion> findAllByOrderByAwardRegionPk_RegionAscSortKeyAsc();
List<AwardRegion> findByAwardRegionPk_RegionOrderBySortKeyAsc(String region);
@Query("select a.region, a.winner_count from awards_regions a "
+ "where a.award_id = :awardId order by a.region")
List<AwardRegion> findByAwardRegionPk_AwardId(@Param("awardId") Long awardId);
}
…和嵌入式PK
@Embeddable
public class AwardRegionPk implements Serializable{
@Column(name = "region")
private String region;
@Column(name = "award_id")
private Long awardId;
}
看起来您在JPA查询中使用的是数据库表列名。使用javabean名称
public interface AwardsRegionsRepository extends JpaRepository<AwardRegion,AwardRegionPk>{
List<AwardRegion> findAllByOrderByAwardRegionPk_RegionAscSortKeyAsc();
List<AwardRegion> findByAwardRegionPk_RegionOrderBySortKeyAsc(String region);
@Query("select a.awardRegionPk.region, a.winnerCount from AwardRegion a "
+ "where a.awardRegionPk.awardId = :awardId order by a.awardRegionPk.region")
List<AwardRegion> findByAwardRegionPk_AwardId(@Param("awardId") Long awardId);
}
public interface AwardsRegionsRepository扩展了JpaRepository{
列出FindAllByerDawardRegionPK_RegionAscSortKeyAsc();
列出findByAwardRegionPk_RegionOrderBySortKeyAsc(字符串区域);
@查询(“从AwardRegion a中选择a.awardRegionPk.region、a.winnerCount”
+“其中a.awardRegionPk.awardId=:a.awardRegionPk.region的awardId订单”)
列出findByAwardRegionPk_AwardId(@Param(“AwardId”)Long AwardId);
}
看起来您在JPA查询中使用的是数据库表列名。使用javabean名称
public interface AwardsRegionsRepository extends JpaRepository<AwardRegion,AwardRegionPk>{
List<AwardRegion> findAllByOrderByAwardRegionPk_RegionAscSortKeyAsc();
List<AwardRegion> findByAwardRegionPk_RegionOrderBySortKeyAsc(String region);
@Query("select a.awardRegionPk.region, a.winnerCount from AwardRegion a "
+ "where a.awardRegionPk.awardId = :awardId order by a.awardRegionPk.region")
List<AwardRegion> findByAwardRegionPk_AwardId(@Param("awardId") Long awardId);
}
public interface AwardsRegionsRepository扩展了JpaRepository{
列出FindAllByerDawardRegionPK_RegionAscSortKeyAsc();
列出findByAwardRegionPk_RegionOrderBySortKeyAsc(字符串区域);
@查询(“从AwardRegion a中选择a.awardRegionPk.region、a.winnerCount”
+“其中a.awardRegionPk.awardId=:a.awardRegionPk.region的awardId订单”)
列出findByAwardRegionPk_AwardId(@Param(“AwardId”)Long AwardId);
}
这是一个字符串列表,而不是对象列表。如果您希望对象查询对象,而不是单个字段!这是一个字符串列表,而不是一个对象列表如果您希望对象查询对象而不是单个字段!您可以查看下面的答案您可以查看下面的答案