Я создаю API отдыха на Jhipster, который должен возвращать детали биллера, используя ID категории в качестве параметра поиска. Вызов конечной точки категорий возвращает список категорий, но вызов конечной точки биллеров с использованием одного из идентификаторов категорий возвращает нулевой результат.
public interface ApplicationUrl {
String BILLERS = "/category/{categoryid}";
}
Это контроллер:
@RequestMapping(ApplicationUrl.BASE_CONTEXT_URL)
public class BillingGatewayController {
@Autowired
private BillingGatewayService billingGatewayService;
@GetMapping(ApplicationUrl.BILLERS)
public BillersServiceResponse getAllBillersByCatId(@PathVariable Long categoryId) {
BillersServiceResponse defaultServiceResponse = new BillersServiceResponse();
defaultServiceResponse.setMessage(Message.fail.name());
ResponseCode responseCode = ResponseCode.BILLER_NOT_AVAILABLE;
log.debug("REST request to get all billers");
List<BillerDto> billers = billingGatewayService.findBillers(categoryId);
if (CollectionUtils.size(billers) > 0) {
responseCode = ResponseCode.SUCCESSFUL;
defaultServiceResponse.setStatus(responseCode.getCode());
defaultServiceResponse.setMessage(Message.SUCCESSFUL.name());
defaultServiceResponse.setData(billers);
}
defaultServiceResponse.setStatus(responseCode.getCode());
return defaultServiceResponse;
}
}
Это классы обслуживания:
public interface BillingGatewayService {
List<BillerDto> findBillers(Long id);
}
public interface BillersRepository extends JpaRepository<Billers, Long>, JpaSpecificationExecutor<Billers> {
}
@Service("billingGatewayService")
public class BillingGatewayServiceImpl implements BillingGatewayService {
@Autowired
private ExtBillersRepository billersRepository;
@Override
public List<BillerDto> findBillers(Long categoryId) {
BillerResponseDto billerResponseDto = new BillerResponseDto();
List<BillerDto> billers = billersRepository.findAllActiveBillers(categoryId);
billerResponseDto.setBillers(billers);
billerResponseDto.setCategoryId(String.valueOf(categoryId));
return billers;
}
}
import com.fms.payfuze.dto.BillerDto;
import com.fms.payfuze.repository.BillersRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import java.util.List;
public interface ExtBillersRepository extends BillersRepository {
String ACTIVE_BILLERS = "select new com.fms.payfuze.dto.BillerDto(b.id, b.name) from Billers b inner join b.categories c where c.id=b.id order by b.name";
@Query(ACTIVE_BILLERS)
List<BillerDto> findAllActiveBillers(@Param("id") Long id);
}
Это billerDTO:
public class BillerDto {
private String billerId;
private String nameOfBiller;
public BillerDto(Long id, String name) {
this.billerId = String.valueOf(id);
this.nameOfBiller = name;
}
public String getBillerId() {
return billerId;
}
public void setBillerId(String billerId) {
this.billerId = billerId;
}
public String getNameOfBiller() {
return nameOfBiller;
}
public void setNameOfBiller(String nameOfBiller) {
this.nameOfBiller = nameOfBiller;
}
}
и это класс Billers:
@Entity
@Table(name = "billers")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Billers implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
@SequenceGenerator(name = "sequenceGenerator")
private Long id;
@Column(name = "name")
private String name;
@Column(name = "active")
private Boolean active;
@Column(name = "date_created")
private Instant dateCreated;
@OneToOne
@JoinColumn(unique = true)
private BillersRouterConfig billersRouterConfig;
@OneToMany(mappedBy = "billers")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
private Set<TransactionDetails> billers = new HashSet<>();
@ManyToMany(mappedBy = "billers")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@JsonIgnore
private Set<Categories> categories = new HashSet<>();
Getters and setters
Я был на нем в течение нескольких дней и мозговой штурм, я буду признателен за все входные данные, но конструктивный и реконструктивный. Спасибо