Jpa hibernate неправильно отображал SQL в DB2?

я думаю, что спящий режим отображал неправильный SQL в DB2? Я конечно ошибаюсь

мой код jpa:

public List<Gc1glcostctrmap> findByCriteria(
        Map<String, SortDirectionEnum> sortFields,
        Integer start,
        Integer length) throws Exception {

  CriteriaBuilder builder = entityManager.getCriteriaBuilder();
  CriteriaQuery<Gc1glcostctrmap> criteriaQuery = builder.createQuery(Gc1glcostctrmap.class);
 Root<Gc1glcostctrmap> root = criteriaQuery.from(Gc1glcostctrmap.class);

  int noDeleted = 0;
  criteriaQuery.select( root )
        .where( builder.equal(root.get(Gc1glcostctrmap_.g1011logdel),  noDeleted) );

  if ( Validator.isNotNull(sortFields) ) {
    criteriaQuery.orderBy(_orderBy(sortFields, builder, root));
  }

    // create query
  Query query = entityManager.createQuery(criteriaQuery);
  query.setFirstResult(start);
  query.setMaxResults(length);

    // execute query
  List<Gc1glcostctrmap> gc1glcostctrmaps = query.getResultList();
  return gc1glcostctrmaps;
}

и sqlshow имеет значение True, а для отображаемой первой страницы:

select fields from BNGL.GC1GLCOSTCTRMAP gc1glcostc0_ where gc1glcostc0_.g1011logdel=0 order by gc1glcostc0_.g1136id asc fetch first 10 rows only

но для второй отображаемой страницы:

select fields from ( select inner2_.*, rownumber() over( order by order of inner2_) as rownumber_ from 
( select fields from BNGL.GC1GLCOSTCTRMAP gc1glcostc0_  where gc1glcostc0_.g1011logdel=0 order by gc1glcostc0_.g1136id asc fetch first 20 rows only ) as inner2_ ) as inner1_  where rownumber_ > 10 
order by rownumber_

и в конечном итоге ошибка:

2018-07-29 09:13:22.218  WARN 6684 --- [nio-8082-exec-9] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: -199, SQLState: 42601
2018-07-29 09:13:22.219 ERROR 6684 --- [nio-8082-exec-9] o.h.engine.jdbc.spi.SqlExceptionHelper   : DB2 SQL Error: SQLCODE=-199, SQLSTATE=42601, SQLERRMC=OF;( . AT MICROSECONDS MICROSECOND SECONDS SECOND MINUTES MINUTE, DRIVER=3.68.61
2018-07-29 09:13:22.219  WARN 6684 --- [nio-8082-exec-9] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: -516, SQLState: 26501
2018-07-29 09:13:22.219 ERROR 6684 --- [nio-8082-exec-9] o.h.engine.jdbc.spi.SqlExceptionHelper   : DB2 SQL Error: SQLCODE=-516, SQLSTATE=26501, SQLERRMC=null, DRIVER=3.68.61
2018-07-29 09:13:22.219  WARN 6684 --- [nio-8082-exec-9] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: -514, SQLState: 26501
2018-07-29 09:13:22.219 ERROR 6684 --- [nio-8082-exec-9] o.h.engine.jdbc.spi.SqlExceptionHelper   : DB2 SQL Error: SQLCODE=-514, SQLSTATE=26501, SQLERRMC=SQL_CURLH200C1, DRIVER=3.68.61
2018-07-29 09:13:22.228 ERROR 6684 --- [nio-8082-exec-9] ir.bmi.service.impl.MapTstServiceImpl    : Error occurred while calling findByCriteria().

пока я прокомментировал setFirstResult и setMaxResults, тогда все в порядке

user4259798 29.07.2018 09:28

для чего установлено начало / длина?

user3973283 29.07.2018 14:33

привет, параметры для пейджинга

user4259798 30.07.2018 10:03

а что они настроили ??????? 0, 10?

user3973283 30.07.2018 12:12

gc1glcostc0_.g1011logdel = 0 ----> Логическое удаление

user4259798 31.07.2018 06:08

получить только первые 10 строк ----> получить только 10 первых записей

user4259798 31.07.2018 06:09

Почему тебе так сложно ответить на простой вопрос? Значит, вы вызываете запрос несколько раз? 1,10, затем 11, 20 и т. д.? JPA Criteria не выполняет "разбиение на страницы". Он просто позволяет вам сгенерировать запрос для установки first / max и все. Пользователь определяет "пейджинг"

user3973283 31.07.2018 08:18

Значит, вы вызываете запрос несколько раз? да, 1,10, затем 11, 20 и т. д.? да

user4259798 01.08.2018 08:55

но этот код работает в БД Oracle и MySql! Я надеялся, что код понятен. Другим способом я получаю количество записей.

user4259798 01.08.2018 08:58

Oracle и MySQL используют совершенно другой синтаксис SQL для обработки ограничений / смещений. Согласно stackoverflow.com/questions/21256121/…, поэтому, если сгенерированный SQL недействителен для вашей базы данных, вы сообщаете об этом как об ошибке в выбранном вами провайдере JPA.

user3973283 01.08.2018 09:30
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
10
301
0

Другие вопросы по теме