У меня следующий запрос:
SELECT title_id, title, array_agg(g.name)
FROM title t
INNER JOIN title_genre tg USING(title_id)
INNER JOIN genre g USING (genre_id)
GROUP BY title_id, title
ORDER BY title_id
LIMIT 10
Пример выходных данных этого запроса:
5527;"The Burbs";"{Suspense,"Dark Humor & Black Comedies",Comedy,"Cult Comedies"}"
5528;"20,000 Leagues Under the Sea";"{"Family Adventures","Children & Family","Ages 5-7","Book Characters","Family Animation"}"
5529;"2001: A Space Odyssey";"{"Classic Sci-Fi & Fantasy","Sci-Fi Thrillers",Classics}"
5530;"2010: The Year We Make Contact";"{"Sci-Fi Dramas","Alien Sci-Fi","Sci-Fi & Fantasy","Dramas Based on Contemporary Literature","Psychological Thrillers","Dramas Based on the Book"}"
5531;"The 39 Steps";"{"Dramas Based on the Book","United Kingdom",Thrillers,"Espionage Thrillers","Dramas Based on Classic Literature",Suspense}"
5532;"4D Man";"{"Classic Sci-Fi & Fantasy","Sci-Fi & Fantasy","Sci-Fi Horror"}"
5533;"8 Seconds";"{Drama,"Romantic Dramas",Biographies,"Indie Dramas","Sports Dramas","Miscellaneous Sports","Sports Stories","Other Sports"}"
5534;"9 1/2 Weeks";"{"Steamy Romance",Romance,"Romantic Dramas"}"
5535;"About Last Night...";"{"Romantic Dramas","Romantic Comedies",Romance}"
5536;"Above the Law";"{"Action & Adventure","Action Thrillers","Martial Arts"}"
(1) Как создать критерии NHibernate вокруг функции array_agg?Нужно ли мне каким-либо образом расширять диалект PostgreSQL, чтобы приспособиться к этому?
(2) Я использую SQLite в качестве базы данных тестирования интеграции и PostgreSQL в качестве базы данных test / prod.SQLite не имеет функции array_agg, но имеет функцию group_concat, которая делает нечто подобное.Можно ли что-то настроить, где я смогу использовать SQLite в своих тестах, а PostgreSQL в test / prod?
(3) array_agg возвращает данные в виде массива.Я нашел отличную статью на nhibernate.info , в которой объясняется, как расширить NHibernate для обработки массивов PostgreSQL.Как мне включить это в мои критерии?Например, допустим, я хочу найти название жанра «Драма», которое не является романтической драмой.
Заранее благодарен за любую помощь!