我有锦标赛实体。他与奖项实体具有 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/