JHipster 按实体字段搜索实体

2024-01-24

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


基于您正在使用 QueryService 的事实,我假设您启用了Filtering option https://www.jhipster.tech/entities-filtering/生成实体时。查询Tournament实体具有Prize两个值之间的量,需要添加一些内容。

In TournamentQueryService,添加以下内容来构建规范prize.amount field:

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

In TournamentCriteria,添加一个字段prizeAmount筛选:private DoubleFilter prizeAmount;。还添加 getter 和 setter。

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

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

  • prizeAmount.greaterOrEqualThan
  • prizeAmount.lessOrEqualThan

您可以将它们添加到query如下调用,这将返回奖金金额 >= 1 且

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将奖金金额包含为字段,prizeAmount需要添加字段TournamentDTO(添加字段和 getter/setter)。您还需要添加@Mapping(source = "prize.amount", target = "prizeAmount") in TournamentMapper将奖品数据映射到TournamentDTO.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JHipster 按实体字段搜索实体 的相关文章

随机推荐