Могу ли я использовать SQL в (…) операторе для названногоквери?

StackOverflow https://stackoverflow.com/questions/4489687

  •  11-10-2019
  •  | 
  •  

Вопрос

Как я могу использовать в моем названии?

@NamedQueries(  
 {   
 @NamedQuery(name = "GetAvailableProducts", query = new StringBuilder("").append("SELECT   p   FROM Product p WHERE p.type= :type AND (p.available IN ('I want to define changeable size of an array or sometinhg like that') OR p.available = :available)")),  
 }

Я имею в виду, что я могу установить параметр «Тип» (я определил его как переменную ---->: type), и я хочу определить переменные внутри в операции. Однако количество параметров не является постоянным. Я хочу определить массив или что -то в этом роде: Array [], и я хочу установить его, когда я называю это по имени.

Это было полезно?

Решение

По имени

@NamedQueries(  
{   
 @NamedQuery(name = "GetAvailableProducts", query = "FROM Product p WHERE p.type= :type AND (p.available IN (:availableCollection) OR p.available = :available)",  
}

Установите параметры

Спячка:

query.setParameterList('availableCollection', yourCollection);

JPA:

query.setParameter('availableCollection', yourCollection);

Другие советы

Вы пробовали что -то вроде

SELECT   p   FROM Product p WHERE p.type= :type AND (p.available IN 
('foo', 'bar') OR p.available = :available)

(Если «доступен» - это строка)

или же

SELECT   p   FROM Product p WHERE p.type= :type AND (p.available IN 
(1, 2, 3) OR p.available = :available)

(Если доступно число)?

Выражение 'in' in jpql равна написанию нескольких операторов или «операторов», в вашем случае пример «в» будет:

... p.available IN ('US', 'GB') ...

Что, я считаю, равна:

... p.available = 'US' OR p.available = 'GB' ...

Вот ссылка, которая хорошо это объясняет: OpenJPA: в выражении

РЕДАКТИРОВАТЬPS Предполагается, что P.Alailable - это строка (тип символа)

Edit2Автор отредактировал вопрос так много раз, что я не могу подписаться на него :) Что касается фактического вопроса о прохождении массива для экспрессии, вот ссылка аналогичного вопроса на Stackoverflow: JPQL в пункте - массивы

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top