Blazeds преобразует BigDecimal в строку - PullRequest
0 голосов
/ 25 января 2011

У меня есть приложение Flex, которое использует блейз-серверы для подключения к бэкэнду Java.Используя удаленное взаимодействие, я вызываю API для выполнения оператора SELECT для таблицы (используя обычные классы JDBC) в базе данных Oracle.

Таблица имеет 2 столбца:

PRODUCT_CODE of type NVARCHAR2(32) and
DEMAND of type NUMBER(10, 0)

Мой Java API выглядит следующим образом:

public List<?> getQueryResult(String query) {
  Connection conn = DriverManager.getConnection(connStr, userName, password);
  Statement stmt = conn.createStatement();
  ResultSet rs = stmt.executeQuery(query);

  ArrayList<?> result = new ArrayList<?>();
  while(rs.next()) {
    Object[] itemArray = new Object[2];
    itemArray[0] = rs.getObject(1);
    itemArray[1] = rs.getObject(2);
    result.add(itemArray);
  }

  return result;
}

В моей стороне Flex у меня есть обработчик для события результата этой удаленной операции:

private function onResult(e:ResultEvent) : void {
  var result:ArrayCollection = (e.result as ArrayCollection);
}

Странно, значения соответствуют столбцу DEMANDавтоматически преобразуются в строку (я отладил, чтобы выяснить, что в бэкэнде это были BigDecimal)

Есть предложения?

1 Ответ

0 голосов
/ 25 января 2011

Да, действительно, BigDecimal из Java преобразуется в String в ActionScript, как вы можете прочитать в руководстве разработчика .В ActionScript нет BigDecimal, поэтому это был единственный вариант - вы не можете преобразовать BigDecimal в int или float.

Если вы уверены, что ваше значение, представленное как NUMBER (10,0), имеет значения в интервале -2,147,483,648 - 2,147,483,647 вы можете преобразовать его в int в Java - см. Код ниже:

itemArray[1] = ((BigDecimal)rs.getObject(2)).intValue();
...