Как привести результат к строке из собственного запроса в Java? - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть запрос, который вернет одну запись с 2 столбцами из таблицы я хочу получить результат в список, каждый элемент содержит значение столбца, но я продолжаю получать ClassCastExceptoion это код:

public List<String> getStatus(Long requestId) {
    List result = new ArrayList();
    if (requestId != null)

    {
        StringBuilder querySBuilder = new StringBuilder();
        querySBuilder.append(" select R.request_status_id , L.request_status_desc ");
        querySBuilder.append(" from Table1 R join  Table2 L ");
        querySBuilder.append(" on R.request_status_id = L.REQUEST_STATUS_Id ");
        querySBuilder.append(" where R.REQUEST_ID =  " + requestId);
        System.out.print(querySBuilder.toString());
        List resultList =
           em.createNativeQuery(querySBuilder.toString()).getResultList();
        Vector resultVec = (Vector)resultList.get(0);

        int id = ((BigDecimal)resultVec.elementAt(0)).intValue();
        String statusName = ((String)resultVec.elementAt(0));

        System.out.println("id" + id);
        System.out.println("name " + statusName);
        result.add(id);
        result.add(statusName);
        if (resultVec == null || resultVec.isEmpty()) {
            return new ArrayList<String>();
        }
        return result;


    }

    return null;
}

Ответы [ 2 ]

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

Шаблон, который я бы использовал, был бы сформулировать входящий собственный набор результатов как List<Object[]>, где каждый массив объектов представляет одну запись:

Query q = em.createNativeQuery(querySBuilder.toString());
List<Object[]> result = q.getResultList();

for (Object[] row : result) {
    int id = (Integer)row[0];
    String statusName = (String)row[1];

    // do something with the id and statusName from above
}
0 голосов
/ 19 ноября 2018

Я думаю, что это опечатка.

String statusName = ((String) resultVec.elementAt (0));

elementAt (1) следует использовать вместо elementAt (0)).

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