Как напечатать нативный запрос в консоль? - PullRequest
0 голосов
/ 19 января 2020

Я создаю веб-приложение для управления базами данных. Одной из функций является «интерпретатор SQL».
Вот мой код, который используется для выполнения запросов:

Пример 1

1  public String executeSQL(String[] split){
2      SessionFactory hibernateFactory = someService.getHibernateFactory();
3      Session session = hibernateFactory.openSession();
4      String message = null;
5      for (int i = 0; i < split.length; i++) {
6          try{
7              String query = split[i];
8              session.doWork(connection -> connection.prepareStatement(query).execute());
9      
10             message = "Success!";
11         }
12         catch(Exception e){
13             message = ((SQLGrammarException) e).getSQLException().getMessage();
14         }
15      
16      }
17      session.close();
18      return message;
19  }

Может кто-нибудь сказать мне, как вызвать "getResultList ()" (строка 8) ?
Я знаю, как сделать это в этом примере (с createNativeQuery):

Пример 2

1  public String executeSQL(String[] split){
2      SessionFactory hibernateFactory = someService.getHibernateFactory();
3      Session session = hibernateFactory.openSession();
4      String message = null;
5      for (int i = 0; i < split.length; i++) {
6          try{
7              String query = split[i];
8              EntityManager entityManager = hibernateFactory.createEntityManager();
9              List<Object[]> resultList = entityManager.createNativeQuery(query).getResultList();
10             resultList.stream().map(Arrays::toString).forEach(System.out::println);
11             message = "Success!";
12          }
13         catch(Exception e){
14              // i can't catch SQLException here :( i mean i don't know how...
15         }
16  
17      }
18      session.close();
19      return message;
20  } 

но, как вы можете видеть (строка 14) Я не знаю, как поймать SQLException здесь, потому что вместо SQLException я получаю это : enter image description here и я не могу получить доступ к этому полю, чтобы получить сообщение (это личное сообщение): enter image description here Мне нужно это сообщение, чтобы распечатать его в моем html. Поэтому я пытаюсь другой метод для выполнения запросов prepareStatement ().
У всех есть идеи, как распечатать этот запрос в консоли (Пример 1) ?

1 Ответ

1 голос
/ 19 января 2020

Чтобы ваши SQL запросы были напечатаны в вашей консоли, добавьте в файл application.properties следующее:

logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE

Надеюсь, это поможет!

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