jon*_*ity 0 grails hibernate hsqldb grails-orm
在我的应用程序中,我有一个用户域对象,其中包含一些字段,包括密码字段.密码字段是使用JASYPT的加密字符串.出于开发目的,我在启动时创建一个硬编码的新用户.它看起来像这样:
User user = new User(
userId:"user1", userFname:"Joe",
userLname:"Blow", userMinit:"A",
userEmail:"joe@blow.com", userPword:"password").save()
Run Code Online (Sandbox Code Playgroud)
当调用save()时,我相信在后台调用hibernate saveOrUpdate().它将新域对象字段值与现有域对象字段值进行比较,以确定是否应将记录插入到数据库中,或者是否应仅更新已存在的记录.
由于密码字段始终是一个新值,因为JASYPT加密它每次都插入一个新记录.
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=')
Run Code Online (Sandbox Code Playgroud)
这是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 = {}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法告诉GORM在保存域对象时忽略密码字段,这样我就不会在数据库中反复使用同一个用户了?
谢谢你的帮助.
响应OP注释,您可以通过向域类添加瞬态属性来使属性在grails中非持久化:
static transients = [ "userPword", "anotherOne" ]
Run Code Online (Sandbox Code Playgroud)
但正如上面所指出的,这对你的问题没有帮助.
谢谢,吉姆.
| 归档时间: |
|
| 查看次数: |
3872 次 |
| 最近记录: |