Запрос SELECT в проверке работоспособности базы данных Dropwizard - PullRequest
0 голосов
/ 16 апреля 2019

Здравствуйте! Я использую dropwizard и hibernate в своем приложении и написал следующую проверку на хакерские ошибки.Это дает мне

org.hibernate.engine.jdbc.spi.SqlExceptionHelper: ResultSet is from UPDATE. No Data.  error

Я пытался изменить .getResultList() вызов на executeUpdate() getMaxResults(), list(), но ни один из них не работает.Как заставить запрос SELECT работать в проверке работоспособности?

открытый класс DatabaseHealthCheck расширяет HealthCheck {

  SessionFactory sessionFactory;
  private static final String validationQuery =
      "SELECT table_name FROM information_schema.tables WHERE table_schema = 'mySchema'";

  public DatabaseHealthCheck(SessionFactory sessionFactory) {
    this.sessionFactory = sessionFactory;
  }


  @Override
  protected Result check() throws Exception {
    Session session = sessionFactory.openSession();
    final Transaction txn = session.beginTransaction();
    try {

      EntityManager em = session.getEntityManagerFactory().createEntityManager();
      em.createNativeQuery(validationQuery).getResultList();
      txn.commit();
    } catch (Exception e) {
      txn.rollback();
      return Result.unhealthy("Cannot execute query due to " + e.getMessage());
    } finally {
      session.close();
    }
    return Result.healthy();
  }
}

Я также попытался упростить запрос - «SELECT1», но все еще вижу ту же ошибку

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