2015-08-11 3 views
0
class User { 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    int id; 
} 
User user1 = new User(); 
session.save(user1); //may be I can got user1.id = 10 
User user2 = new User(); 
user2.id = 20; 
session.save(user2); //The user2.id may be 11 

Как я могу сохранить user2, а id - 20?Как сохранить объект с присвоенным идентификатором

+0

Вы уже устанавливаете его. В чем твоя проблема сейчас? –

+0

после сеанса.save (user2) идентификатор изменится, может быть user2.id = 11 – wade

+0

Вы хотите сохранить user1 без предоставления идентификатора. Но идентификатор пользователя1 может быть 20. И когда вы сохраните user2 с идентификатором 20, произойдет исключение. Значит, вы не хотите получать исключение? Вы хотите, чтобы спящий режим изменял идентификатор пользователя1 при согласованном подобном расположении? –

ответ

0

Я не думаю, что в спящем режиме есть такой вариант. Вместо AUTO, вы можете попробовать следующие варианты стратегии также:

GenerationType.TABLE - поставщик живучести использует таблицу базы данных для управления ключами.

GenerationType.SEQUENCE - поставщик сохранения использует последовательность баз данных для генерации ключей. База данных должна поддерживать Последовательности

GenerationType.IDENTITY - поставщик обеспечения сохранности отказывается от базы данных для генерации ключей. База данных должна поддерживать тип столбца IDENTITY.

Еще один момент: он также замедлит работу. Для каждой вставки ему придется искать весь столбец идентификатора. Вы можете себе представить, насколько это повлияет на производительность.

+0

Я много ищу об этом. Может быть единственным способом присвоить id удалить GeneratedValue. Но если я удалю его. Я не могу получить идентификатор после сеанса. – wade