Можно ли получить значение индекса в MySQL в java? - PullRequest
1 голос
/ 23 февраля 2012

таблица:

CREATE TABLE `table` (
  `id` int(11) NOT NULL,
  `status` enum('on','off') NOT NULL DEFAULT 'off',
  PRIMARY KEY (`id`),
) 

Я могу использовать значение индекса перечисления для обновления или вставки:

update table set status=1 where id=12 (идентификатор обновления = 2 status до on)

но в java тип поля Enum всегда возвращает String (проверьте здесь)

select status from table where id=2

или используйте resultSet.getObject("status") (java)

всегда возвращать строку on, но я хочу получить целое число 1

возможно ли это?

Ответы [ 2 ]

5 голосов
/ 23 февраля 2012
SELECT 
  CAST(`status` AS UNSIGNED) AS numerical_status
FROM `table`

Подводный камень: это основано на 1, поэтому вы получите 1 для on и 2 для off

Редактировать

Если вынельзя использовать вычисляемые поля (по какой-либо причине), создайте представление:

CREATE OR REPLACE VIEW `table_numstatus` AS
  SELECT `id`,  CAST(`status` AS UNSIGNED) AS `status`
  FROM `table` ;

и направьте свои запросы в это представление вместо таблицы.

0 голосов
/ 23 февраля 2012

возможно это не то, что вы ищете, но в качестве решения вы можете создать Java-enum на стороне клиента и конвертировать в соответствии с его значением

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