我试图使用以下命令查询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()
}

10-07 12:30
查看更多