У нас есть объект с полем перечисления - emailCommunicationStatus
, и мы хотим установить для него значение по умолчанию, используя аннотации JPA - 'UNKNOWN'
.Spring JPA - значение по умолчанию для поля enum в enum
Однако, когда мы сохраняем объект в БД, значение этого поля составляет null
, а не. Для булевского поля - isLocked
сохраняется правильное значение по умолчанию (false
).
@Entity
public class Account {
@Id
@GeneratedValue
@Column(name = "id")
protected Long id;
@Column(columnDefinition = "boolean default false")
private boolean isLocked;
@Column(length = 32, columnDefinition = "varchar(32) default 'UNKNOWN'")
@Enumerated(value = EnumType.STRING)
private CommunicationStatus emailCommunicationStatus;
PlayerAccount() {
super();
}
}
public enum CommunicationStatus {
VALID,
INVALID,
DONT_CONTACT,
UNKNOWN;
}
Если мы вместо этого использовать: @Column(length = 32, columnDefinition = "varchar(32) default 'UNKNOWN'")
для emailCommunicationStatus
мы получаем следующее исключение при сохранении:
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'emailCommunicationStatus' cannot be null
Что мы делаем не так? Почему он работает только с булевыми?
Спасибо, что нужно знать. :) вот что будет. – Ayelet