我试图使用以下命令查询grails中的数据库:
def per = User.get(springSecurityService.principal.id)
def query = Post.whereAny {
author { username == per.username }
}.order 'dateCreated', 'desc'
messages = query.list(max: 10)
我的用户在用户域中,在发布域中,我有:
String message
User author
Date dateCreated
当我运行此查询时,每次我在 Controller 中用于填充数据库的方法为空时:
def updateStatus() {
def status = new Post(message: params.message)
System.out.println("test " + params.message)
status.author = User.get(springSecurityService.principal.id)
status.save()
}
我在查询数据库方面非常陌生,因此,如果有人可以推荐一些阅读方法,这也很好。
谢谢
最佳答案
新版本的spring-security-core插件为您的 Controller 添加了方法,因此您可以替换:
def per = User.get(springSecurityService.principal.id)
def query = Post.whereAny {
author { username == per.username }
}.order 'dateCreated', 'desc'
messages = query.list(max: 10)
与
messages = Post.findAllByAuthor(principal, [sort: 'dateCreated', order 'desc', max: 10])
没有声明springSecurityService
您可以将updateStatus操作替换为:
def updateStatus(){
def status = new Post(message: params.message, author: principal)
status.save()
}