Grails上次登录字段未更新
这是我的实体类和登录代码。我的上一次登录在db中保持空,没有引发异常。我尝试记录hibernate sql语句。似乎update语句没有执行 实体:Grails上次登录字段未更新,grails,groovy,Grails,Groovy,这是我的实体类和登录代码。我的上一次登录在db中保持空,没有引发异常。我尝试记录hibernate sql语句。似乎update语句没有执行 实体: class Users { static hasMany = [farm:Farms,report:Reports,reportMessage:ReportMessages,notifications:Notifications] String userName String Password Date lastLogin
class Users {
static hasMany = [farm:Farms,report:Reports,reportMessage:ReportMessages,notifications:Notifications]
String userName
String Password
Date lastLogin
String userImage
static constraints = {
userName (blank:false, unique:true)
Password (blank:false)
userImage (blank:false)
lastLogin (nullable:true, blank:true)
}
}
登录码
def login(user)
{
def status = false;
Users u = user;
Users users = Users.findByUserName(u.userName)
PasswordCodec pwd = new PasswordCodec();
u.Password = pwd.encode(u.Password)
if (users !=null && u.Password.equals(users.Password))
{
u.lastLogin = new Date()
u.save()
status = true
}
}
看起来您正在将
lastLogin
日期分配给随请求传递的命令对象。存储的域对象似乎未更新:
u.lastLogin = new Date()
u.save()
应该由
users.lastLogin = new Date()
users.save()
希望对您有所帮助。看起来您正在为请求传递的命令对象分配
lastLogin
日期。存储的域对象似乎未更新:
u.lastLogin = new Date()
u.save()
应该由
users.lastLogin = new Date()
users.save()
希望这能有所帮助。Tim说得对-类和变量名非常分散注意力。域名类名称应为单数。如果坚持使用Rails中愚蠢的复数表名约定,可以在映射块中配置:
class User {
...
static mapping = {
table 'users'
}
}
对Users
实例使用局部复数变量也会造成混淆-Users=…
会产生误导,因为这意味着Users
可能是多个实例的集合
我建议您停止这么辛苦的工作,使用SpringSecurityCore或Shiro。滚动您自己的安全性是有风险的,需要花费时间来实现站点的真正功能。Tim说得对-类和变量名非常分散注意力。域名类名称应为单数。如果坚持使用Rails中愚蠢的复数表名约定,可以在映射块中配置:
class User {
...
static mapping = {
table 'users'
}
}
对Users
实例使用局部复数变量也会造成混淆-Users=…
会产生误导,因为这意味着Users
可能是多个实例的集合
我建议您停止这么辛苦的工作,使用SpringSecurityCore或Shiro。滚动您自己的安全性是有风险的,并且需要花费时间来实现站点的真正功能。将
u.save()
替换为u.save(flush:true,failOnError:true)
并查看这是否会引发错误。这对grails没有影响!如果传入的用户
是从数据库中获取的域对象,那么是的,我同意这不会有什么区别。您的代码不起作用,我的建议是我将如何识别问题。尝试删除除日期和保存设置之外的所有代码。接下来,我将查看映射和数据库表,以确保它们设置正确(我假设它们是正确的,因为您没有收到错误,但这是一个可以查看的地方)。尝试将lastLogin上的约束更改为“nullable:true”,将u.save()替换为u.save()
(flush:true,failOnError:true)
并查看这是否会引发错误。这不会在grails中造成差异!如果传入的用户
是从数据库中获取的域对象,那么是的,我同意这不会有什么区别。您的代码不起作用,我的建议是我将如何识别问题。尝试删除除日期和保存设置之外的所有代码。接下来,我将查看映射和数据库表,以确保它们设置正确(我假设它们是正确的,因为您没有收到错误,但这是一个可以查看的地方)。尝试将lastLogin上的约束更改为“nullable:true”+1:-)在一系列名称不正确的变量和属性中很好地发现+1:-)在一个名称不正确的变量和属性的森林中被很好地发现了!