Как получить автоматически сгенерированное поле перед сохранением в спящем режиме - PullRequest
0 голосов
/ 16 марта 2011

Я использую это в моем pojo

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

Теперь я не связал это в форме jsp.

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

Но могу ли я получить это, потому что, по моему мнению

1) Сначала я должен сохранить данные пользователя в базе данных

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

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

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

Ответы [ 2 ]

1 голос
/ 16 марта 2011

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

0 голосов
/ 16 марта 2011

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

uuidотправлено пользователю по электронной почте, то это больше не правильно.Итак, я думаю, что ваш uuid должен быть по крайней мере только для чтения и генерироваться автоматически при создании пользовательского экземпляра.Вы можете достичь этого, присвоив значение 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(), чтобы получить сгенерированный идентификатор после создания экземпляра пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...