Обновление Enum By API - PullRequest
       1

Обновление Enum By API

0 голосов
/ 12 июня 2018

Я хочу обновить значение времени выполнения Enum. Я использую JPA и в настоящее время имею Enum как

public enum ColorEnum
{
    A, B, C
}

И использую этот Enum в Entity As:

@Enumerated(EnumType.STRING)
@Column(name = "Color_Enum ", nullable = false)
private ColorEnum colorEnum ;

, он работает дляЯ хочу предоставить API для добавления нового Enum 'D' в будущем, если есть необходимость.В таком случае, каков наилучший подход к созданию сущности и есть ли способ изменить enum?

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Способ сделать это - использовать интерфейс.

interface Colour
{
    String getHex(); // or whatever a colour does 
}

Затем вы можете объявить цвета по умолчанию:

enum DefaultColour implements Colour
{
    RED("ff0000"),
    BLUE("0000ff");

    private final String hex;

    DefaultColour(String hex) { this.hex = hex; }

    @Override
    public String getHex() { return hex; }
}

Затем, когда кто-то хочет добавить дополнительный цвет, ониможет реализовать тот же интерфейс:

class Gold implements Colour {
    //...
}

или предоставить полный список:

enum AdditionalColour implements Colour {
    YELLOW("..."),
    GREEN("...");

    //...
}

Я бы использовал интерфейс поставщика услуг для предоставления дополнительных цветов вво время выполнения.

0 голосов
/ 12 июня 2018

Перечисления предназначены для статических, конечных, неизменяемых, управляемых экземплярами объектов, имеющих смысл констант [...]

Я бы порекомендовал использовать String или сериализуемый класс, представляющий ваш цвет (например, значения RBG) и сохраняющий это.

@Entity
@Table(name = "color")
public class ColorEntity implements Serializable {

    @Enumerated(EnumType.STRING)
    @Column(name = "red", nullable = false)
    private int red;

    @Enumerated(EnumType.STRING)
    @Column(name = "green", nullable = false)
    private int green;

    @Enumerated(EnumType.STRING)
    @Column(name = "blue", nullable = false)
    private int blue;

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