Hibernate: Как указать @ColumnDefault для столбца типа enum - PullRequest
2 голосов
/ 02 июля 2019

У меня перечисление определено следующим образом:

public enum TRAFFIC_SOURCE {
    IP, CLIENT_ID, MOBILE
}

И в моем хранилище:

@Column(name = "SOURCE")
@NotNull
@Enumerated(EnumType.STRING)
private TRAFFIC_SOURCE source;

Теперь я хочу указать значение по умолчанию для столбца.Я попробовал две вещи, получая ошибки в обоих случаях:

@ColumnDefault(TRAFFIC_SOURCE.IP)
// Error:(26, 43) java: incompatible types: com.myproj.enums.TRAFFIC_SOURCE cannot be converted to java.lang.String

@ColumnDefault(TRAFFIC_SOURCE.IP.name())
// Error:(26, 51) java: element value must be a constant expression

, заставляя меня использовать

@ColumnDefault("IP")

Есть ли способ использовать переменную Enum по умолчанию?

1 Ответ

2 голосов
/ 02 июля 2019

Поскольку @ColumnDefault принимает в качестве аргумента только строку и значение в аннотации должно быть константой, единственная возможность - использовать

@ColumnDefault("IP")

Если вам не нужно указывать значение по умолчанию в столбце таблицы и всегда вставлять данные с помощью JPA, вы можете инициализировать поле, как сказал Капчаш:

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