Я создал боб UserPreferences
. Первичным ключом является id
столбец. Вот определение боба:
@Entity
public class UserPreferences {
@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid")
@Column(unique = true)
@ColumnDefault("")
private String id;
private String email;
// Getters and Setters
}
Теперь я использую Kotlin
для вставки данных в этот компонент. Вот код для этого:
val newUserPreferences = UserPreferences().apply { email = newUserRequest.email }
mUserPreferenceService.save(newUserPreferences)
Предположим, что newUserRequest.email
не null
. Настройка auto-dll
в моем application.yml
равна update
. Когда этот код выполняется, я вижу, что Hibernate
генерирует следующий запрос для создания таблицы:
create table user_preferences (
id varchar(255) default not null
email varchar(255),
primary key (id)
) engine=MyISAM
В этот момент приложение не загружается со следующей ошибкой:
Причина: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:
У вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, которое
соответствует вашей версии сервера MariaDB для правильного использования синтаксиса
около 'не ноль,
Глядя на исключение, очень ясно, что код не работает, потому что вместо использования пустого String
в качестве значения по умолчанию, hibernate просто помещает пробел в сгенерированный запрос. Итак, вот мои вопросы:
- Должно ли это рассматриваться как ошибка в Hibernate?
- Как справиться с такой ситуацией, когда я хотел бы иметь пустую строку
""
в качестве значения по умолчанию для столбца?