Получение org.hsqldb.HsqlException: пользователю не хватает привилегии или объект не найден: JSON_SEARCH при работе с тестами junit - PullRequest
0 голосов
/ 13 мая 2019

Я определил named-native-query в моем файле query.hbm.xml.

<named-native-query name="getEntityxByVal" result-class="com.app.core.model.Entityx">
    <query>
      <![CDATA[
          select * from entityx where JSON_SEARCH(properties->'$.val', 'one', :val) is not NULL
      ]]>
    </query>
  </named-native-query>

В моей базе данных mysql у меня есть таблица entityx, в которой есть свойства столбца с типом json. В этом json у меня есть ключ 'val', который содержит массив строк. Значение свойства столбца

{
'val': ['val1', 'val2]
}

Я использую jpa, где мой код для выполнения вышеуказанного запроса выглядит следующим образом.

public Optional<Entityx> getByVal(String val) { // val = "val1"
        Query query = getEntityManager().createNamedQuery("getEntityxByVal");
        query.setParameter("val", val);

        try {
          return query.getSingleResult());
        } catch (NoResultException e) {
          return Optional.empty();
        }
}

Это прекрасно работает, когда я звоню с использованием API. Но когда я запускаю его, тесты junit типа

  @Test
  public void checkPersistAndFetchByVal() throws IOException {
    Entityx expectedEntityx = getEntityx("entityx");
    entityxRepository.persist(expectedEntityx);

    Optional<Entityx> entityx = entityxRepository.getByVal("imei1");

    Assert.assertTrue(entityx.isPresent());
    Assert.assertEquals(expectedEntityx, entityx.get());
  }

Выдает ошибку - org.hsqldb.HsqlException: пользователю не хватает привилегии или объект не найден: JSON_SEARCH

В чем может быть проблема?

...