2011-03-16 3 views
0

Я использую это в моем POJOКак получить автогенерируемое поле перед сохранением в спящем режиме

@Column(name = "uuid") 
public String getUuid() { 
    return UUID.randomUUID().toString(); 
} 

Теперь я не переплетен это в форме Jsp.

Теперь проблема заключается в том, что я должен отправить этот uuid в электронное письмо, когда пользователь заполнит форму.

Но я могу получить, что, поскольку на мой взгляд

1) Во-первых, я должен сохранить детализацию пользователя в базе данных

Session session = sessionFactory.getCurrentSession(); 
     session.save(person); 

Теперь это означает, что я должен снова запросить Databse получить идентификатор а затем получить сгенерированный идентификатор. не будет ли он тратить ресурсы на повторный запрос базы данных.

любое простое решение

ответ

1

не могли бы вы передать UUID к тому, что генерирует по электронной почте или сохранить его временно с атрибутом сессии?

0

Когда вы используете доступ к свойствам, hibernate вызовет getters всех отображаемых свойств вашего пользовательского объекта во время процесса очистки, чтобы определить, были ли изменены значения. Если есть изменения значений, hibernate затем сгенерирует соответствующий UPDATE SQL для свойств изменений. Поскольку ваш getUuid() всегда возвращает новое случайное значение, hibernate всегда будет обнаруживать это изменение и всегда обновлять значение столбца uuid до нового значения всякий раз, когда вы обновляете пользовательский объект.

uuid, отправленный пользователю по электронной почте, будет затем исправляться. Итак, я думаю, что ваш uuid должен по крайней мере быть доступен только для чтения и должен генерироваться автоматически при создании экземпляра пользователя. Вы можете достичь его assiging значения uuid в конструкторе пользователя, например:

public class User { 

     ....... 
     private String uuid; 
     ...... 

     public User() { 
       this.uuid = UUID.randomUUID().toString(); 
     } 

     public String getUuid() { 
       return uuid; 
     } 

     private void setUuid(String uuid) { 
       this.uuid = uuid; 
     } 

} 

Вы можете позвонить user.getUuid() получить сгенерированный идентификатор после пользовательского экземпляра.

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