Я работаю над проектом, где мне нужно передать строку, значение которой будет служить дополнительным условием для запроса. Это похоже на проверку правил, если данные переданы на основе условия.
@Service
public class ProductTypeParameterService implements CapsCrudService<ProductTypeParameter> {
public ProductTypeDto getProductByParameters(ApplicationFormDto applicationFormDto ) {
if(productTypeParameters != null && productTypeParameters.size() > 0 && !productTypeParameters.isEmpty()) {
for (ProductTypeParameter temp : productTypeParameters) {
if(temp.getProductType() != null) {
productType = productTypeRepository.findById(temp.getProductType().getId()).get();
if(productType != null) {
ProductRule productRule = productRuleRepository.findProductRuleByProductTypeId(productType.getId());
if(productRule != null && productRule.getRule() != null) {
int result = productRuleRepository.validateProductRule(productRule.getRuleValue(), applicationFormDto.getApplicationId());
if (result >= 1) {
productTypeDto = new ProductTypeDto(productType);
}
else {
productType = productTypeRepository.findById(1L).get();
productTypeDto = new ProductTypeDto(productType);
System.out.println("DEFAULT PRODUCT TYPE: " + productTypeDto);
System.out.println("FAIL ON OTHER PARAMETERS");
}
}
}
}
}
} else {
productType = productTypeRepository.findById(1L).get();
productTypeDto = new ProductTypeDto(productType);
System.out.println("DEFAULT PRODUCT TYPE: " + productTypeDto);
}
}
}
Мои репо
@Repository
public class CustomProductRuleRepositoryImpl implements CustomProductRuleRepository {
@Override
public int validateProductRule (String query, Long applicantId){
Query q = entityManager.createNativeQuery("select * from INDIVIDUAL_LOAN_APPLICATION WHERE " + query + " AND LOAN_APPLICATION_ID = " + applicantId);
if (q.getFirstResult() == 1) {
return q.getFirstResult();
} else {
return 0;
}
}
}
ПРИМЕР: Примером значения productRule.getRuleValue () является "INDIVIDUAL_LOAN_APPLICATION.DEPENDENTS = 2 И INDIVIDUAL_LOAN_APAYSF 1". "
Весь запрос должен выглядеть следующим образом. ВЫБЕРИТЕ COUNT (*) из INDIVIDUAL_LOAN_APPLICATION, ГДЕ INDIVIDUAL_LOAN_APPLICATION.DEPENDENTS = 2, и INDIVIDUAL_LOAN_APPLICATION.YEARS_OF_STAY = 1 И LOAN_APPLICATION_ID = 301
1013 * СО1 * 1013 ВЫБЕРИТЕ COUNT (*) из INDIVIDUAL_LOAN_APPLICATION, ГДЕ INDIVIDUAL_LOAN_APPLICATION.MONTHLYSALARY = 30 000 И LOAN_APPLICATION_ID = 301
Как мне выполнить этот запрос? ТИА !!!