For det første er det faktum, at du skal videregive mere end 2000 id'er (at dømme efter dit 1. punkt) til en forespørgsel en advarselsklokke i sig selv. Måske er der en bedre måde at løse det underliggende problem på.
Du kan bruge tilgang #2 og sortere hver liste, og derefter udføre fletningssortering i applikationen. Det vil kræve ekstra kode, men vil sandsynligvis (forudsat at den faktiske forespørgsel er relativt hurtig) yde bedre end tilgang #3.
For #3 er der 2 store ulemper ved at håndtere midlertidige borde:
- mens Hibernate understøtter dem (se på
Table.sqlTemporaryTableCreateString
metoden, bruger den en masse understøttende metoder iDialect
klasse), bruges de internt og vil kræve yderligere kodning fra din side for at være tilgængelige fra appen. - Vigtigere er det, at brug af en midlertidig tabel vil tvinge dig til at skrive din forespørgsel som native SQL (da den ikke vil blive kortlagt). Hvis du bruger Criteria API, skal du bruge
sqlRestriction
med en underforespørgsel.