2016-06-20 2 views
0

У меня есть сущность с Map<String,string> из specifications:Пользовательские Spring JPA запрос принести Карту

class Product { 
    Map<String, String> specifications; 
} 

Я должен создать пользовательский запрос с 2-мя параметрами (ключ, значение), который будет получать все продукты, где это спецификации с ключом равно некоторому значению.

Например, принести продукты с красным цветом (псевдо код):

петли через продукты;
извлечения продукта;
спецификации присоединения;
получить значение по ключевому «цвету» и сравнить его с заданным значением «красный»; добавить к выводу, если true; следующий товар;

Я попробовал этот запрос:

@Query("SELECT p FROM Products p LEFT JOIN FETCH p.specifications, p.reviews WHERE p.specifications.?1 = ?2") 

Но очевидно, что это не работает.

+0

"она не работает". «Очевидно». Ты действительно много нам рассказываешь. «d.specifications.?1» явно недействителен JPQL. –

ответ

2

Один рабочий раствор, как показано ниже:

SELECT p FROM Product p LEFT JOIN p.specifications, p.reviews m 
where (KEY(m) = :1 and :2 in (VALUE(m))) 
Смежные вопросы