Я создал приложение для шва с Hibernate (по умолчанию) провайдером ORM.Сохраняя сущность, она выдает следующую ошибку:
Caused by: java.sql.SQLException: Field 'COUNTRY_ID' doesn't have a default value
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
Выдается, потому что первичный ключ не генерируется Hibernate до сохраняющейся сущности.
@Entity
@Table(name = "country")
public class Country implements java.io.Serializable {
private Integer countryId;
//other instance variables...
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "COUNTRY_ID", unique = true, nullable = false)
public Integer getCountryId() {
return this.countryId;
}
public void setCountryId(Integer countryId) {
this.countryId = countryId;
}
Когда я вносю изменения в 'Страна'Table, то есть сделать COUNTRY.COUNTRY_ID как AUTO_INCREMENT (база данных MySQL), тогда приведенный выше код сохраняется для объекта Country.Даже после попытки стратегии
@GeneratedValue(strategy = GenerationType.IDENTITY)
возникает ошибка, если я не сделаю COUNTRY_ID как AUTO_INCREMENT.
Итак, необходимо ли, чтобы первичные ключи были сделаны с автоматическим приращением в таблице?Почему Hibernate не создает уникальный первичный ключ (используя алгоритм HiLo) перед сохранением сущности, если первичный ключ не помечен как AUTO_INCREMENT в таблице базы данных.
Заранее спасибо.
С уважением