Не работает установка значения по умолчанию свойства в Hibernate
у меня есть логическое свойство в моей сущности. Вот мои примечания к нему:
@Column(name = "IS_ACTIVE", nullable = false, columnDefinition="BIT DEFAULT 1", length = 1)
public Boolean getActive() {
return isActive;
}
но columnDefinition="BIT DEFAULT 1"
doen не работает отлично. Вот код SQL, который я получаю в результате для сгенерированной таблицы:
IS_ACTIVE BIT(1) NOT NULL,
что я делаю не так?
и так, когда я пытаюсь сохранить экземпляр этого класса в базе данных, я получаю исключение:
`com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'IS_ACTIVE' cannot be null`
если я удалить nullable = false
свойства:
@Column(name = "IS_ACTIVE", columnDefinition="BIT DEFAULT 1", length = 1)
public Boolean getActive() {
return isActive;
}
таким образом, я могу сохранить созданный объект в этом случае. Но это еще значение по умолчанию не задано и я получаю NULL в значении этого поля в базе данных.
любые идеи, пожалуйста? Я использую MySQL Server 5.1, если это важно. Я был бы очень благодарен за любую помощь. Заранее спасибо!
2 ответов
попробуйте использовать BOOLEAN
тип данных, определить @Column
аннотация такая:
@Column(name = "IS_ACTIVE", columnDefinition = "boolean default true", nullable = false)
private Boolean active = true;
ссылка на правильный ответ в этой ссылке Как установить значение по умолчанию в Hibernate
Если вы хотите реальное значение базы данных по умолчанию, используйте columnDefinition - @Column (name = "myColumn", nullable = false, columnDefinition = "int default 100"). Обратите внимание, что строка в columnDefinition зависит от базы данных. Также, если вы выберете этот вариант,вы должны использовать dynamic-insert, поэтому Hibernate не включает столбцы с нулевыми значениями при вставке. Иначе говоря о дефолте не имеет значения.
ключом решения является динамическая вставка аннотации. Вы можете добавить его в свой класс сущностей в следующем примере:@org.hibernate.annotations.Entity(dynamicInsert = true)