Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用JPA@query注释定义自定义查询_Java_Spring_Jpa - Fatal编程技术网

Java 如何使用JPA@query注释定义自定义查询

Java 如何使用JPA@query注释定义自定义查询,java,spring,jpa,Java,Spring,Jpa,如何使用JPA@Query符号?我希望运行查询: 选择区域,赢家\u计数 来自美国地区 何处奖励_id=? 按地区排序 我拥有存储库: public interface AwardsRegionsRepository extends JpaRepository<AwardRegion,AwardRegionPk>{ List<AwardRegion> findAllByOrderByAwardRegionPk_RegionAscSortKeyAsc();

如何使用JPA
@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);
}

这是一个字符串列表,而不是对象列表。如果您希望对象查询对象,而不是单个字段!这是一个字符串列表,而不是一个对象列表如果您希望对象查询对象而不是单个字段!您可以查看下面的答案您可以查看下面的答案