sql >> Database teknologi >  >> RDS >> Oracle

Hibernate + Oracle IN klausul begrænsning, hvordan løses det?

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 i Dialect 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.


  1. SQL er der en måde at sortere flere tidskolonner i én, mens metadata bevares?

  2. SQLAlchemy with_for_update rækkelåsning virker ikke?

  3. Postgresql-genereret kolonne mislykkes ved sammenkædning af ikke null-kolonner

  4. Sjove tweets om en DBA's liv