Не может сделать в спящем режиме остановка, показывающая SQL с помощью Spring Адаптер Поставщика JPA

На самом деле вам не нужен цикл для перебора набора результатов, так как функции в инструкции SELECT выполняются для каждой записи результата.

Вы можете использовать функции потока управления, как описано на странице документации MySQL , для обработки соответствующих данных в вашем результате. В этом вопросе stackoverflow есть несколько примеров «IF» в операторе «SELECT» - выберите выходное значение на основе значений столбца или вы также можете использовать комбинацию различных операторов комбинации данных в MySQL

Мне удалось получить ожидаемый результат на основе предоставленного вами изображения, используя комбинацию UNION, JOIN и подзапросов.

Код


  SELECT *, mqa.Current_Status as Result 
  FROM MyQuery mqa
  WHERE 
    mqa.Block = 1 
    AND mqa.Status_History IS NULL
  UNION
  SELECT mqb.*, mqb.Status_History as Result 
  FROM MyQuery mqb
  WHERE 
    Status_History IS NOT NULL
  UNION
  SELECT mqc.ID,
       mqc.Period,
       mqc.Current_Status,
       mqc.Status_History,
       mqc.Block,
       (SELECT TOP 1 mqd.Status_History FROM MyQuery mqd
                    WHERE mqd.ID = mqc.ID
                        AND mqd.Block < mqc.Block
                        AND mqd.Status_History IS NOT NULL
                     ORDER BY Block DESC)
        FROM MyQuery mqc
                  WHERE 
                    mqc.Status_History IS NULL
                    AND mqc.Block <> 1

Результаты

|     ID | Period | Current_Status | Status_History | Block | Result |
|--------|--------|----------------|----------------|-------|--------|
| 012014 | 201710 |              5 |         (null) |     6 |      7 |
| 012014 | 201711 |              5 |              7 |     5 |      7 |
| 012014 | 201712 |              5 |         (null) |     4 |      3 |
| 012014 | 201810 |              5 |         (null) |     3 |      3 |
| 012014 | 201811 |              5 |              3 |     2 |      3 |
| 012014 | 201812 |              5 |         (null) |     1 |      5 |
| 012015 | 201710 |              2 |         (null) |     6 |     10 |
| 012015 | 201711 |              2 |         (null) |     5 |     10 |
| 012015 | 201712 |              2 |         (null) |     4 |     10 |
| 012015 | 201810 |              2 |         (null) |     3 |     10 |
| 012015 | 201811 |              2 |         (null) |     2 |     10 |
| 012015 | 201812 |              2 |             10 |     1 |     10 |

Вы можете поиграть с кодом выше в этом SQLFiddle

15
задан Mojo 24 March 2009 в 22:34
поделиться

3 ответа

Попробуйте установить его в persistance.xml

<persistence>
  <persistence-unit name="PU">
    <properties>
      <property name="hibernate.show_sql" value="false"/>
    </properties>
  </persistence-unit>
</persistence>
20
ответ дан 1 December 2019 в 01:24
поделиться

Насколько я знаю, В спящем режиме, также зарегистрирует SQL-операторы при входе для org.hibernate.SQL происходит в DEBUG или ALL уровень, таким образом, Вы могли попытаться отключить это (например, с log4j.logger.org.hibernate.SQL=info при использовании Log4J).

3
ответ дан 1 December 2019 в 01:24
поделиться

Если вы используете spring, убедитесь, что для свойства showSql не установлено значение true

Я делал это сам

<bean id="vendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
    <property name="showSql" value="false"/>
</bean>
3
ответ дан 1 December 2019 в 01:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: