Как сделать строковый первичный ключ спящим. @GeneratedValue стратегии
Извините, если этот вопрос уже задавался, яПрочитал несколько статей, но не нашел ответа.
Моя цель - создать устройство сущности с уникальным полем IMEI, и я хотел бы использовать его в качестве первичного ключа и указать его во время регистрации устройства (указывается вручную при создании сущности). Я использую инструмент Spring roo для разработки и спящий в качестве ORM.
Когда я указываю это в объявлении сущности:
@RooJavaBean
@RooToString
@RooJpaActiveRecord(identifierField = "IMEI", identifierType = String.class)
public class Device {...}
Я получил это.
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "IMEI")
private String Device.IMEI;
При развертывании проекта на сервере с MySQL DB я получаю эту ошибку
2013-03-17 20:03:23,136 [main] ERROR org.hibernate.tool.hbm2ddl.SchemaExport - HHH000389: Unsuccessful: create table device (imei varchar(255) not null auto_increment, model varchar(255), name varchar(255) not null, version integer, primary key (imei))
2013-03-17 20:03:23,136 [main] ERROR org.hibernate.tool.hbm2ddl.SchemaExport - Incorrect column specifier for column 'imei'
Затем я переопределяю сгенерированное поле с помощью
@Id
@GeneratedValue(generator = "org.hibernate.id.Assigned")
@Column(name = "the_code")
private String code;
(Я'мы нашли это вслышать)
но все равно получаю ошибку, тогда яя просто изменил код
@Id
private String IMEI;
а затем он работает нормально и просит меня указать поле imei перед сохранением объекта.
Мои вопросы:
Правильно ли использовать мое настраиваемое поле в качестве идентификатора?
это нормально для String
это нормально, что он не генерируется с Hibernate, но берется с устройства imei.
что такое org.hibernate.id.Assigned
почему roo сгенерировал код для @RooJpaActiveRecord (identifierField = "IMEI», identifierType = String.class) не работает.
Можно ли создать String автоматически сгенерированный первичный ключ
каково значение стратегии GeneratedValue по умолчанию (мой последний случай)
мы читалиофициальный документ но не сделалt Поймите все, пожалуйста, отошлите меня к статье, где я могу прочитать обо всем этом.
Спасибо, извините за длинный вопрос.