Как написать пользовательское предложение where в файле JPA orm.xml - PullRequest
0 голосов
/ 28 августа 2018

В моем приложении Springboot есть файл orm.xml в моей папке WEB-INF. У меня есть несколько именованных собственных запросов в файле orm.xml.

Я хочу добавить условие запроса в запрос на основе значений параметра в запрос.

Я ищу что-то вроде этого:

 <named-native-query name="MyReport.countInventory">
        <query>
        SELECT COUNT(*) AS COUNT
        FROM
          Inventory
        WHERE 
         <if :date>
             add_date = :date
         </if>
        </query>
    </named-native-query>

1 Ответ

0 голосов
/ 29 августа 2018

Это невозможно с JPA. Он просто позволяет выполнять простые операторы SQL без какой-либо условной обработки.

Во многих случаях фактически можно реализовать требуемую условную логику в самом SQL как Turo , описанное в его / ее комментарии.

Поскольку вы, похоже, используете Spring Data JPA, вы также можете использовать Specifications для динамического создания условий.

Другой альтернативой может быть использование MyBatis , которое позволяет создавать операторы SQL способом, аналогичным тому, который вы изложили в своем вопросе. Следующий пример взят из http://www.mybatis.org/mybatis-3/dynamic-sql.html

<select id="findActiveBlogWithTitleLike"
     resultType="Blog">
  SELECT * FROM BLOG
  WHERE state = ‘ACTIVE’
  <if test="title != null">
    AND title like #{title}
  </if>
</select>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...