Как добавить параметры Dynami c из для L oop в @Query - PullRequest
0 голосов
/ 21 апреля 2020

У меня такой запрос:

StringBuilder sql= new StringBuilder("SELECT DISTINCT
//
//
 "AND 10000 * A.HAYTZY + 100 * A.HAYTZA + A.HAYTZG BETWEEN "
        for (int i = 0; i < arrayList.size(); i++) {
            sql.append(" (A.HAYPTP = " + arrayList.get(i).getProductCode() +
                    " AND A.HAYFOR = " + arrayList.get(i).getProductSubCode() + ") OR ");
        }
        sql.append(" (1 = 2))");

Итак, в репозитории я должен запросить его.

Как здесь: https://www.logicbig.com/tutorials/spring-framework/spring-data/query-named-parameters.html

@Query("SELECT e FROM Employee e WHERE e.dept = :dept AND "
          + "(SELECT COUNT(DISTINCT e2.salary) FROM Employee e2 "
          + "WHERE e.salary < e2.salary AND e2.dept = :dept) < :topSalNum "
          + "ORDER BY e.salary DESC")
  List<Employee> findByDeptTopNSalaries(@Param("topSalNum") long topSalaryNum, @Param("dept") String dept);

Итак, для моего запроса я могу сделать что-то подобное?

  "SELECT DISTINCT
        //
        //
         "AND 10000 * A.HAYTZY + 100 * A.HAYTZA + A.HAYTZG BETWEEN :forLoop
                sql.append(" (1 = 2))"
          List<Object> getObjects(@Param("forLoop") String forLoop);

И из службы я делаю это, чтобы вызвать этот запрос:

String forLoop =  for (int i = 0; i < arrayList.size(); i++) {
            forLoop .append(" (A.HAYPTP = " + arrayList.get(i).getProductCode() +
                    " AND A.HAYFOR = " + arrayList.get(i).getProductSubCode() + ") OR ");
        }

repo.getObjects(forLoop );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...