Я пытаюсь создать случайные столбцы с использованием метода ниже и после генерации столбцов, я использую эти столбцы в своем SELECT sql
.Убедитесь, что я получаю одну запись с использованием Randomness
final String columnsList = getColumns(table.getColumns());
final String selectSql = "SELECT ID, CREATION_DATE, LAST_MODIFIED_DATE, " + columnsList + " from " + table.getTableName() + " where id = ?";
/**
* A simple method to get the column names in the order in which it was
* inserted
*
* @param columns
* @return
*/
private String getColumns(final List<String> columns) {
List<String> copy = new ArrayList<String>(columns);
Collections.shuffle(copy);
int rNumber = random.nextInt(columns.size());
List<String> subList = copy.subList(0, rNumber);
Collections.sort(subList, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return columns.indexOf(o1) < columns.indexOf(o2) ? -1 : 1;
}
});
return StringUtils.join(subList, ",");
}
Постановка задачи: -
Иногда я видел columnsList
значение пусто, и если он пуст, то selectSql
не будет работать, как будет дополнительная ,
перед тем from keyword
. Как я могу убедиться, что getColumns
должен возвращать по крайней мере одну запись каждый раз.
Я считаю, что nextInt
будет генерировать случайное число между 0 (inclusively) and n (exclusively)
. Таким образом, это может быть возможно, что он будет выбрать 0 иногда Любой способ генерации случайных чисел между 1(inclusively) and n (exclusively)
Спасибо valodzka. После редактирования, как это, я получаю это исключение иногда 'java.sql.SQLException: Column '' не найден в результатах.' Вы знаете, почему это происходит? – AKIWEB
сложно сказать, основываясь только на коде, который вы указали – valodzka
Какой еще код я должен предоставить здесь? Я пробовал и ваш другой способ, который дает мне другое исключение. – AKIWEB