В БД есть две таблички t_statuses и t_operators. В первой значения (-1 - BANNED, 0 - OFFLINE, 1 - ONLINE), во второй собственно операторы, статус которых - внешний ключ (status_id) на первую таблицу. В java коде я вместо entity-класса для статусов сделал enum:
public enum OperatorStatus {
BANNED(-1), OFFLINE(0), ONLINE(1);
private int id;
OperatorStatus(int id) { this.id = id; }
public int getValue() { return id; }
}
В базе имеется одна запись со статусом 0 - OFFLINE. Если в классе Operator поле статуса сделать типом Integer, то 0 в него и устанавливается. Но, если я создаю поле типа OperatorStatus, его значение становится равным BANNED, т.е. -1. С чем связано такое различие?
когда создаешь поле типа OperatorStatus, думаю ты присваиваешь значение с os.ordinal() равным 0 - т.е. первое из списка
int/Integer тоже присваеваются нулю при инициализации
P.S. как ты объявляешь поле типа OperatorStatus и у тебя не возникает NullPointerException?
Сборка персонального компьютера от Artline: умный выбор для современных пользователей