我在我的pojo中使用它
@Column(name = "uuid")
public String getUuid() {
return UUID.randomUUID().toString();
}
现在我没有以jsp形式绑定它。
现在问题是,当用户填写表单时,我必须在电子邮件中发送此uuid。
但我可以得到这个,因为在我看来
1)首先我必须在数据库中保存用户详细信息
Session session = sessionFactory.getCurrentSession();
session.save(person);
现在它意味着我必须再次查询数据库获取人的id,然后获取生成的id。不会浪费资源再次查询数据库。
任何简单的解决方案
答案 0 :(得分:1)
您是否无法将UUID传递给生成电子邮件的任何内容,或者使用会话属性临时存储它?
答案 1 :(得分:0)
当您使用属性访问时,hibernate将在刷新过程中调用用户实体的所有映射属性的getter,以确定是否有任何值更改。如果有值更改,hibernate将生成相应的UPDATE SQL for更改属性。由于您的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()
来获取生成的ID。