Oracle
 sql >> база данни >  >> RDS >> Oracle

Ограничение на Hibernate + Oracle IN клауза, как да го разрешим?

Първо, фактът, че трябва да предадете повече от 2000 идентификатора (съдейки по вашата 1-ва точка) към заявка, е предупредителен звънец сам по себе си. Може би има по-добър начин за решаване на основния проблем.

Можете да използвате подход №2 и да сортирате всеки списък, след което да извършите mergesort в рамките на приложението. Това ще изисква допълнителен код, но вероятно (ако приемем, че действителната заявка е относително бърза) ще се представи по-добре от подход №3.

За #3 има 2 големи недостатъка при работа с временни таблици:

  • докато Hibernate ги поддържа (вижте Table.sqlTemporaryTableCreateString метод, той използва куп поддържащи методи в Dialect клас), те се използват вътрешно и ще изискват допълнително кодиране от ваша страна, за да бъдат достъпни от приложението.
  • по-важното е, че използването на временна таблица ще ви принуди да напишете вашата заявка като собствен SQL (тъй като няма да бъде картографирана). Ако използвате Criteria API, ще трябва да използвате sqlRestriction с подзаявка.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. скрипт, който изтегля данни от txt файл в клаузата where

  2. dyld:обвързването на мързелив символ е неуспешно за php oic8 на Apple M1

  3. Как да експортирате резултата от заявката в Excel в Oracle SQL Developer?

  4. Каква е разликата между (*) и .* в regexp?

  5. получаване на грешка при създаване на таблица като ORA-00904::невалиден идентификатор в база данни на oracle sql