2010-10-04 4 views
1

Если я использую ex.merge (obj), теперь, если в объекте obj я устанавливаю первичный ключ на значение, которого нет в базе данных, создаст ли он новую запись или выкинет исключение?merge используется только для создания или обновления?

, например

if obj with pk val = 19 doesnot exist in database,and i set 
obj.setPk(20); 
obj.setName("nm"); 

em.merge(obj) // will this throw an exception or create a new record?`enter code here` 

ответ

3

Это создаст новый рекорд:

  • , если предприятие уже в контексте сохранения состояния (сессия), никаких действий не предпринимается, для каскадов

  • кроме
  • Если объект отсоединен, возвращается копия (объект '), которая присоединена (управляется)

  • , если объект является переходным (новым экземпляр), она сохраняется и настойчивое (и управления) копия возвращается

+0

+1 хорошего объяснение –

+0

я скопировал из комментария я написал на родовом Дао, потому что это не так просто. Я помню, мне нужно было прочитать спецификацию несколько раз, прежде чем понять, что происходит :) – Bozho

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