Использование оператора, если ELSE для названного запроса?

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

Вопрос

@NamedQueries(  
   {   
 @NamedQuery(name = "GetAvailableProducts", query = new StringBuilder("").append("SELECT p   FROM Product p WHERE p.type= :type AND (p.available = 'ALL' OR").append(isTest() ? "(p.available = 'TEST' OR)"  : " ").append("p.available = :available)")),  
 }

Это дает мне ошибку, которую не может распознать метод isTest (). Вместо этого метода, если я помесчу оператор IF как LIK IF (1 == 1) или что -то в этом роде, он говорит «атрибут должен быть Констанс» в идее. Как решить?

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

Решение

Параметры аннотаций Java могут быть только константами времени компиляции. Это не может работать.

Справочная страница: Аннотации

Цитировать:

После определения типа аннотации вы можете использовать его для аннотирования объявлений. Аннотация - это особый вид модификатора, и может использоваться везде, где могут использоваться другие модификаторы (такие как публичные, статические или окончательные). По соглашению аннотации предшествуют другим модификаторам. Аннотации состоят из AT-SIGN (@), за которым следует тип аннотации и в скобках списка пар элемента. Значения должны быть постоянными временем компиляции.

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

Я не верю, что вы можете сделать это из названногоквери.

Либо создайте несколько именованных запросов, либо вместо этого используйте динамический запрос:

 Query query = em.createQuery(...); 
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top