У меня есть приложение SpringBoot.В его хранилище используется CrudRepository
.
Я пытаюсь передать собственный запрос из моего уровня Service на уровень Repository.Так как я могу это сделать?Я знаю, что есть аннотация @Query.но я хочу знать, как передать нативный запрос из моего слоя службы в слой хранилища?Если это невозможно, подскажите, как написать приведенный ниже запрос в аннотациях @Query
Метод сервисного уровня
public List<Application> search(Application app) {
List<Application> list = new ArrayList<>();
StringBuilder sb = new StringBuilder();
sb.append("SELECT * FROM applications WHRERE is_delete = 0 ");
try {
if(app.getFirst_name().trim().length() > 0 && app.getFirst_name() != null) {
sb.append("AND first_name = '" + app.getFirst_name() + "'");
}
if(app.getLast_name().trim().length() > 0 && app.getLast_name() != null) {
sb.append("AND last_name = '" + app.getLast_name() + "'");
}
if(app.getEmail().trim().length() > 0 && app.getEmail() != null) {
sb.append("AND email = '" + app.getEmail() + "'");
}
if(app.getPhone().trim().length() > 0 && app.getPhone() != null) {
sb.append("AND phone = '" + app.getPhone() + "'");
}
if(app.getStatus()+"".length() > 0) {
sb.append("AND status = '" + app.getStatus() + "'");
}
//Here i am preparing search query
String query = sb.toString();
list = (List<Application>) applicationDao.search(query);
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
IApplicationDao
package com.Mortgage.MortgageLoanAPI.dao;
import java.util.List;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import com.Mortgage.MortgageLoanAPI.models.Application;
public interface IApplicationDao extends CrudRepository<Application, Long>{
List<Application> search(String query);
}