Как изменить динамический c объектный запрос на построитель критериев или лучшую производительность - PullRequest
0 голосов
/ 25 февраля 2020

Здравствуйте. Я написал запрос на соединение, но у меня нет реляционных аннотаций на моих сущностях. Мне нравится менять мой запрос для лучшей производительности. Есть ли другой способ сделать это

@Override
public List<Object[]> search(String code, String name, String username, String shopName, String startDate, String endDate) {
    Query query = null;
    StringJoiner stringJoiner = new StringJoiner(" AND ");
    stringJoiner.add("SELECT sthLogin.sthId, sth.sthMobileNumber, sth.createdDate, sth.expiryDate, sth.brandingName, sth.shopName" +
            " FROM tbl_sth_login_credentials sth INNER JOIN tbl_maintain_sth_profile sth ON sth.Id = sth.sthPrimaryId WHERE sth.deletionStatus = 'N' ");

    if(StringUtils.isNotEmpty(sthCode))
        stringJoiner.add("stlogin.code = '" + sthCode + "'");

    if(StringUtils.isNotEmpty(sthName))
        stringJoiner.add("sth.brandingName = '" + sthName + "'");

    if(StringUtils.isNotEmpty(username))
        stringJoiner.add("sthLogin.sthMobileNumber = '" + username + "'");

    if(StringUtils.isNotEmpty(shopName))
        stringJoiner.add("sth.shopName = '" + shopName + "'");


    if(StringUtils.isNotEmpty(shopName) && StringUtils.isNotEmpty(endDate))
        stringJoiner.add("sth.createdDate BETWEEN '" + startDate + "' AND '" + endDate + "' ");

    query = entityManager.createNativeQuery(stringJoiner.toString());
    return query.getResultList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...