Java динамическое предложение где на основе поиска пользователя - PullRequest
0 голосов
/ 11 ноября 2018

Привет, мне нужно динамически построить запрос на основе выбора пользователя.Я не могу написать, где условия с оператором if, потому что у меня есть 50 столбцов в таблице. Есть ли способ без операторов if?

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Вы имеете в виду, как избежать внедрения SQL, например конкатенации операторов SQL во время выполнения?

    static final String INVOICE_QUERY = "SELECT inv from Invoice inv WHERE (:createDate IS NULL OR inv.createDate = :createDate) AND (:quantity IS NULL OR inv.quantity = :quantity) AND (:custName IS NULL OR inv.custName = :custName)";
    Session session = getHibernateTemplate().getSessionFactory().openSession();

    Query query = session.createQuery(INVOICE_QUERY);
    query.setDate("createDate", createDate);
    if(quantity != null)
        query.setLong("quantity", quantity);
    else
        query.setBigInteger("quantity", null);
    if(StringUtils.isNotBlank(custName))
        query.setString("custName", custName);
    else
        query.setString("custName", null);
    return query.list();
0 голосов
/ 12 ноября 2018

Вы можете посмотреть на CrtitriaAPI или использовать функцию гибернации. Запрос по примеру

На самом деле, если вы используете пружину с модулем данных пружины, вы можете посмотреть спецификации

Пожалуйста, смотрите по ссылкам ниже:

https://dzone.com/articles/hibernate-query-example-qbe https://vladmihalcea.com/query-entity-type-jpa-criteria-api/ https://spring.io/blog/2011/04/26/advanced-spring-data-jpa-specifications-and-querydsl/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...