2013-09-26 4 views
0

У меня есть этот код:Когда спящий режим устанавливает первичный ключ (id)?

Candidate candidate = new Candidate(); 
candidate.setName("testUser"); 
candidate.setPhone("88888"); 
candidateService.add(candidate); 
sessionFactory.getCurrentSession().flush(); 
return candidate; 

CandidateService помеченный как @Transactional;

Не могли бы вы объяснить мне, почему после выполнения candidateService.add(candidate); кандидат получает значение поля id. Возможно, это нормально?

candidateService.add(candidate) realization: 

public void add(Candidate candidate) { 
    Authentication auth = SecurityContextHolder.getContext().getAuthentication(); 
    String login = auth.getName(); 
    User user = utilService.getOrSaveUser(login); 
    candidate.setAuthor(user); 
    candidateDao.add(candidate); 
} 

@Override 
public Integer add(Candidate candidate) throws HibernateException{ 
    Session session = sessionFactory.getCurrentSession(); 
    if (candidate == null) { 
     return null; 
    } 
    Integer id = (Integer) session.save(candidate); 
    return id; 

} 

Я думал, что это произошло, если кандидат в упорном состоянии.

Я перепутал.

ответ

1

Поскольку идентификатор является первичным ключом таблицы candiate, когда вы добавляете его в базу данных, Id генерирует и возвращает метод сохранения.

Если вы видите документы от save method.

Сохранять данный экземпляр переходного процесса, сначала назначая сгенерированный идентификатор. (Или используя текущее значение свойства идентификатора, если используется назначенный генератор.) Эта операция каскадирует к связанным экземплярам, ​​если ассоциация сопоставляется с cascade = "save-update".

Возвращает: сгенерированный идентификатор

+0

Что причина "Возвращает: сгенерированный идентификатор"? Я могу получить id так: myEntity.getId(); –

+0

Поскольку это первый раз, когда запись попала в БД и БД, для нее был создан идентификатор. –

+0

mmm .... объект, который я сохраняю, может иметь другой идентификатор после выполнения save method? –

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