Sök…


Introduktion

Det finns scenarier när vi hanterar servicelager i livstiden, när vi måste fråga databasen med för många klausuler eller hantera flera tabeller. I sådana fall använder vi någon av:

1) Dynamisk fråga (omslag på API för viloläge)

2) Anpassade SQL-frågor

Anmärkningar

referenser:

  1. Anpassad SQL
  2. Dynamisk fråga

Med hjälp av dynamisk fråga i Liferay

För de flesta scenarier som involverar enheter från servicelager kan vi nöja oss med standardtjänstsamtal, med lite hjälp från hitta också. För enkla scenarier som involverar flera enheter går vi mot att använda Dynamic query API.This är en wrapper API för kriteriet API som används i viloläge. Det kan användas i fall där vi måste generera dynamisk fråga, som inte är särskilt komplex till sin natur, med flera konstruktioner från API: n. Till att börja med är några av de mest använda konstruktionerna: DynamicQueryFactoryUtil Används för att konstruera fråga

RestrictionsFactoryUtil Används för att tillhandahålla begränsningar iefields för jämförelse med ett visst värde för att begränsa resultaten som matchar ett visst värde eller inom ett intervall, etc.

ProjectionFactoryUtil Används för att tillhandahålla projektioner för att få fält som kommer att vara en del av sökresultatet, dvs. istället för att tillhandahålla hela enheten, kommer endast att tillhandahålla vissa fält eller tillämpa aggregration-funktion (som min.max, avg) på samma.

PropertyFactoryUtil Används för att jämföra vissa egendomar från entitetsklassen för att för det mesta göra jämförelse med andra fält från en fråga

Implementeringen av dessa klasser finns i paketet dao.orm.jpa med alla tillgängliga metoder



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow