Spring JPA эквивалентен конструктору строк MySQL

#mysql #spring #performance #jpa #spring-data-jpa

Вопрос:

Более новые версии MySQL имеют концепцию выражения конструктора строк, которое позволяет выполнять запросы по условиям, состоящим из подмножества столбцов, соответствующих одной из заданных записей в списке кортежей; например:

 SELECT * FROM t WHERE (c1, c2) IN ((1, 1), (2, 2))
 

возвращает все записи, которые имеют (c1 = 1 и c2 = 1) или (c1 = 2 и c2 = 2).
Мой вопрос заключается в том, может ли это быть достигнуто с помощью Spring JPA без использования собственных запросов, которые сделали бы код зависимым от поставщика БД.

В качестве фиктивного примера предположим, что у меня есть класс Foo с целочисленными полями bar baz и списком Foo s. Я хочу создать запрос Spring JPA, который выдаст все записи бд из таблицы A(c1, c2, c3) , соответствующие одному из моих Foo s, имеющему c1 = bar и c2 = baz .

Я не смог найти никаких ссылок в весенних документах.

Если (пока) нет решения этой проблемы, то мне интересно, лучше ли выполнять полный выбор, а затем фильтровать код, чем выполнять N запросов для отдельных записей, принимая во внимание, что таблица небольшая (тысячи записей).

Комментарии:

1. Это не поддерживается JPA/Hibernate. Если вы хотите использовать всю мощь SQL с Java, я рекомендую jooq.org

2. До MySQL 5.7.3 «конструкторы строк» существовали, но были очень неэффективны.