2015-06-17 3 views
1

У меня есть база данных с автогенерированным первичным ключом. Соответствующая запись JPA ниже:Получите идентификационную информацию перед сохранением в JPA

@Id 
@GeneratedValue(strategy=GenerationType.IDENTITY) 
@Column(unique=true, nullable=false) 
@JsonProperty("item_id") 
private Long id; 

Теперь у меня есть еще одно поле Строка, в которой мне нужно добавить идентификатор, прежде чем вставить его в БД. Возможно ли получить значение идентификатора перед введением значения в базу данных? Я видел на некоторых сообщениях, что я могу очистить объект. Но я не уверен, что это будет работать в моем сценарии. Я новичок в JPA, поэтому я не знаю, как делать флеш.

Спасибо.

+1

Я думаю, вы не можете, потому что у каждой СУБД есть своя стратегия генерации уникальных идентификаторов. То, что вы можете сделать, это [1] сначала создать объект, а затем обновить значение на основе сгенерированного идентификатора в той же транзакции или [2], генерируя уникальный идентификатор в приложении, используя что-то вроде UUID – Leo

+0

. Идентификатор гарантированно будет сгенерирован во время очистки ('EntityManager # flush()'). Если этого не произойдет, то ваш код, скорее всего, не сделает то, что он должен. – Tiny

ответ

1

Я не думаю, что вы можете. Сгенерированный ключ возвращается из БД как часть инструкции, выполняющей операцию INSERT. Даже извлечение сгенерированных ключей зависит от реализации и не гарантируется на каждом хранилище.

Смежные вопросы