作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用字符串“username”作为表的主键,
但是,当保存并获取具有用户名ID的列时,我希望忽略这种情况,以使新用户无法尝试模拟其他用户。
,例如注册新用户时
class User {
String username
String password
static constraints = {
}
static mapping = {
id generator: 'assigned', name: "username", type: 'string'
}
}
最佳答案
可以防止第二个用户注册仅在大小写不同时使用的名称的一种方法是在数据库层的用户名上创建不区分大小写的唯一索引。如果您尝试保存一个与现有名称不区分大小写的名称,则会出现数据库异常。这是mysql的默认设置,但对于其他数据库,应执行以下操作:
create unique index username_csunique_idx on user(lower(username));
User.findByUsernameIlike(userName)
或
User.find("from User as u where lower(u.username) = ?", [userName.toLowerCase()])
(如果您更喜欢HQL)。
关于grails - Grails:将字符串(用户名)用作主键,但是使用ignorecase保存并获取ID字符串(用户名)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1722833/
我是一名优秀的程序员,十分优秀!