使用GORM保存方法时如何忽略域对象上的字段
|
在我的应用程序中,我有一个用户域对象,其中包含一些字段,包括密码字段。密码字段是使用JASYPT加密的字符串。出于开发目的,我在启动时创建了一个经过硬编码的新用户。看起来像这样:
User user = new User(
userId:\"user1\", userFname:\"Joe\",
userLname:\"Blow\", userMinit:\"A\",
userEmail:\"joe@blow.com\", userPword:\"password\").save()
当我调用save()时,我相信在后台会调用休眠的saveOrUpdate()。它正在将新的域对象字段值与已经存在的域对象字段值进行比较,以决定是否应将记录插入数据库中,还是应该只更新已存在的记录。
由于JASYPT加密,由于password字段始终是一个新值,因此每次都会插入一个新记录。
INSERT INTO USER VALUES(1,\'joe@blow.com\',
\'Joe\',\'user1\',\'Blow\',\'A\',\'\',\'\',\'\',
\'gIkUvM9b6d5vrEhkKzqKz0U7uxqRpZFhiQrrBTDbKX0=\')
INSERT INTO USER VALUES(2,\'joe@blow.com\',
\'Joe\',\'user1\',\'Blow\',\'A\',\'\',\'\',\'\',
\'yap0S0mCb2CpGngcANpSWoLqlL6SozLYK4WbKYHSVEw=\')
这是Domain类:
@Table(name=\"user\")
class User {
String userId
String userFname
String userLname
String userMinit
String userEmail
String userPword
String userMisc1 = \"\"
String userMisc2 = \"\"
String userMisc3 = \"\"
public User(){};
static mapping = {
version false
columns {
userId column:\'user_id\'
userFname column:\'user_fname\'
userLname column:\'user_lname\'
userMinit column:\'user_minit\'
userEmail column:\'user_email\'
userPword column:\'user_pword\'
userMisc1 column:\'user_misc1\'
userMisc2 column:\'user_misc2\'
userMisc3 column:\'user_misc3\'
}
userPword type: GormEncryptedStringType
}
static constraints = {}
}
有没有一种方法可以告诉GORM在保存域对象时忽略密码字段,这样我就不会一次又一次地在数据库中遇到相同的用户?
谢谢你的帮助。
没有找到相关结果
已邀请:
4 个回复
咖哀烈
奥李
但是如上所述,这对您的问题没有帮助。 谢谢,吉姆。
净爽
慰泥悍瓶