Как сделать строковый первичный ключ спящим. @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 Поймите все, пожалуйста, отошлите меня к статье, где я могу прочитать обо всем этом.

Спасибо, извините за длинный вопрос.

Ответы на вопрос(3)

Ваш ответ на вопрос