получить список <HashMap>из createSqlQuery в спящем режиме без Pojo или Scalar - PullRequest
0 голосов
/ 04 июня 2018

Я пытаюсь преобразовать возвращаемые типы запросов SQL (список) в список, но на данный момент я получаю список объектов [].Есть ли какой-либо метод, чтобы преобразовать его непосредственно в список без помощи Pojo, добавив скаляр или HQL?

Мой текущий метод абстрактного запроса -

String sqlQuery = "SELECT UI.idea_id, UI.user_id,UI.title, UI.innovators
FROM user_idea AS UI  
WHERE UI.status=1 AND CONCAT(';',UI.innovators,';') like '%;jack;%';";
        try {
            Query query = getCurrentSession().createSQLQuery(sqlQuery);
            if (values != null) {
                for (int i = 0; i < values.length; i++) {
                    query.setParameter(i, values[i]);
                }
            }

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Вот как я нашел решение, так как нет заранее определенной функции для этого.Сначала я извлек все столбцы из запроса, а затем создал хеш-карту с column_name (ключ) и queryResult (значение).следует избегать выбора * из .., вместо этого укажите в запросе необходимые имена столбцов, чтобы получить результат от данной функции.

public List<Map> queryResultToListMap(String query, List queryResult) {
        int indexOffrom = query.indexOf("from");
        int indexOfselect = query.indexOf("select");
        String subquery = query.substring(indexOfselect, indexOffrom);
        subquery = subquery.replace("select", "");
        String[] arr = subquery.split(",");

        List cols = new ArrayList();
        for (int i = 0; i < arr.length; i++) {
            String[] subarr = arr[i].split(" ");
            cols.add(subarr[subarr.length - 1]);
        }
        List<Map> colswithdata = new ArrayList<>();
        Iterator itr = queryResult.iterator();

        while (itr.hasNext()) {
            HashMap colsWithData = new HashMap();
            Object[] tempArray = (Object[]) itr.next();
            for (int i = 0; i < cols.size(); i++) {
                colsWithData.put(cols.get(i), tempArray[i].toString());
            }
            colswithdata.add(colsWithData);

        }

        return colswithdata;
    }
0 голосов
/ 04 июня 2018

Попробуйте что-то вроде этого.

Query query = session.createSQLQuery(sql).setResultTransformer(Transformers.aliasToBean(Test.class));
...