2015-05-29 3 views
0

Я новичок в веб-сервисах и пытаюсь запросить некоторые таблицы с использованием ORMLite, он не поддерживает утверждения объединения, поэтому я использую необработанный запрос. Мне было интересно, есть ли способ указать, как возвращается JSON. То, что я прямо сейчас:Заказ JSON возвращается ORMLite?

Dao<CodesModel,String> CodesDao = DaoManager.createDao(connectionSource, CodesModel.class); 

    GenericRawResults<String[]> rawResults = 
     CodesDao.queryRaw(
     "select r.CodeA, s.SubCodeA, r.CodeB, s.SubCodeB " + 
     "from CodesTable r JOIN SubCodesTable s ON s.CodeA = r.CodeA " + 
     "where SubCodeB = '" + b_sub + "' AND r.CodeB = '" + b_code + "'"); 

И результаты возвращаются как String [] и всегда, кажется, в порядке

[Codea, SubCodeA, CodeB, SubCodeB]

но я только проверил это локально и не могу найти в документации, что определяет порядок для переменных в возвращаемом массиве.

ответ

0

Результаты упорядочены таким образом, потому что это тот порядок, в котором вы указали их в инструкции select. Если вы хотите, чтобы результаты упорядочивались по-другому, измените их в своем запросе.

+1

Спасибо, я просто не был на 100% уверен, что это сработало. Я закончил использовать выбор всех и просто присоединиться к этим столбцам, поэтому я также отправлю свой код для этого, чтобы помочь другим –

0

Если кто-либо ищет способ узнать имена столбцов при использовании «select *», вы также можете использовать «getColumnNames()» в объекте rawResults и они всегда будут в порядке, в котором результаты. Примеры

//The result is returned as a GenericRawResults object 
    List<String[]> results = rawResults.getResults(); 
    String[] columns = rawResults.getColumnNames(); 

    JSONObject obj = new JSONObject(); 

    if(results.size()>0) 
    { 
     obj.put(columns[0], results.get(0)[0]); 
     obj.put(columns[1], results.get(0)[1]); 
     obj.put(columns[2], results.get(0)[2]); 
     obj.put(columns[3], results.get(0)[3]); 
    } 
Смежные вопросы