У меня есть таблица и вы хотите сохранить статус с помощью перечисления. Я создал перечисление, как показано ниже.
/**
* Enumeration for Status
*
*
* Current defined values are :
* <ul>
* <li>ACTIVE = 1</li>
* <li>INACTIVE = 2</li>
* </ul>
*/
public enum Status {
/**
* ACTIVE (Ordinal 1).
*/
ACTIVE(1),
/**
* INACTIVE (Ordinal 2).
*/
INACTIVE(2),
private int value;
private Status(int value) {
this.value = value;
}
public static void main (String ars[]){
for (Status str : Status.values()) {
System.out.println("====str==========="+str.name() +"::::::: "+str.ordinal());
}
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
}
Как получить порядковое значение от 1. Мой вывод выглядит так
====str===========ACTIVE::::::: 0
====str===========INACTIVE::::::: 1
На самом деле я сопоставил это перечисление с моей Entity, и я использовал его как ниже
@Column(name = "STATUS",nullable=false)
@Enumerated(EnumType.ORDINAL)
private Status status;
Как сохранить активный статус как 1...?
Вы можете переопределить метод toString() вашего перечисления или предоставить getter.
public enum Status {
/**
* ACTIVE (Ordinal 1).
*/
ACTIVE(1),
/**
* INACTIVE (Ordinal 2).
*/
INACTIVE(2),
private final int value;
private Status(int value) {
this.value = value;
}
public int getValue() {
return value;
}
// OR
@Override
public String toString() {
return String.valueOf(value);
}
}
Затем вы можете позвонить
System.out.println(ACTIVE); // toString is called
или
System.out.println(ACTIVE.getValue());
Использовать getValue()
вместо ordinal()
? ordinal()
не магически знает, чтобы вызвать ваш метод, он просто возвращает порядковый номер.
print str.getValue()
.
ординал дает вам значения по умолчанию.