java - JHipster 按实体字段搜索实体

标签 java spring spring-boot spring-data-jpa jhipster

我有锦标赛实体。他与奖项实体具有 OneToOne 关系。获奖实体已备案“金额”。因此,如果我想搜索奖金介于两个值之间的锦标赛,我该如何使用 JHipster QueryService 来做到这一点?

最佳答案

基于您使用 QueryService 的事实,我假设您启用了 Filtering option生成实体时。要查询 Prize 金额在两个值之间的 Tournament 实体,需要添加一些内容。

TournamentQueryService 中,添加以下内容来构建 prize.amount 字段的规范:

if (criteria.getPrizeAmount() != null) {
    specification = specification.and(buildReferringEntitySpecification(criteria.getPrizeAmount(), Tournament_.prize, Prize_.amount));
}

TournamentCriteria 中,为 prizeAmount 过滤器添加一个字段:private DoubleFilterprizeAmount;。还要添加 getter 和 setter。

现在您可以通过 Swagger 测试请求(在菜单管理 -> API 下)并根据奖金金额字段过滤锦标赛。

如果要在客户端进行这个查询,需要在HTTP请求中添加两个参数:

  • prizeAmount.greaterOrEqualThan
  • prizeAmount.lessOrEqualThan

您可以将它们添加到 query 调用中,如下所示,这将返回奖金金额 >= 1 和 <= 5 的锦标赛(示例为 Angular):

loadAll() {
    this.tournamentService.query({
        'prizeAmount.greaterOrEqualThan': 1,
        'prizeAmount.lessOrEqualThan': 5
    }).subscribe(
        (res: HttpResponse<ITournament[]>) => {
            this.tournaments = res.body;
        },
        (res: HttpErrorResponse) => this.onError(res.message)
    );
}

如果您希望 TournamentDTO 将奖金金额包含为字段,则需要在 TournamentDTO 中添加 prizeAmount 字段(添加字段和 getter/setter)。您还需要在 TournamentMapper 中添加 @Mapping(source = "prize.amount", target = "prizeAmount") 以将奖品数据映射到 中的该字段>锦标赛DTO

关于java - JHipster 按实体字段搜索实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51565096/

相关文章:

java - 如何选择过去一个月的第一个星期一之前的星期日

amazon-web-services - AWS Fargate 网络 - 端口 80 : Connection refused

java - 如何在 j 帧上绘制图像的各个 RGB 分量

java - 如何添加评价我的应用程序弹出消息 android?

java - 如何将字节数组转换为 double 组?

spring-boot - Hyperledger Fabric-sdk-java 无法与订购者连接(未找到与本地主机匹配的主题替代 DNS 名称)

eclipse - Spring Boot、Spring Loaded、Eclipse、Maven 基本示例

java - 创建配置 MAVEN、CXF 和 spring 的示例应用程序

java - Spring - 在 Spring 项目中包含本身使用 Spring 的 jar 的方法

java - Spring MessageSource 没有从属性文件中获取消息