У меня есть этот код:Когда спящий режим устанавливает первичный ключ (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;
}
Я думал, что это произошло, если кандидат в упорном состоянии.
Я перепутал.
Что причина "Возвращает: сгенерированный идентификатор"? Я могу получить id так: myEntity.getId(); –
Поскольку это первый раз, когда запись попала в БД и БД, для нее был создан идентификатор. –
mmm .... объект, который я сохраняю, может иметь другой идентификатор после выполнения save method? –