找不到Grails jdbcsqlexception列

时间:2018-03-15 16:08:56

标签: database grails controller gorm

我正在尝试创建一个允许用户喜欢/不喜欢我的Grails应用程序中的进程的函数。我之前已经完成了文章并且它的工作完美。出于某种原因,当我尝试以相同的方式处理进程时,我得到了这个例外:

Message
    Request processing failed; nested exception is org.grails.gsp.GroovyPagesException: Error evaluating expression [businessProcess?.getLikedCount()] on line [18]: could not prepare statement
Caused by
    Column "THIS_.LIKED" does not exist Column "THIS_.LIKED" not found; SQL statement: select count(*) as y0_ from business_process_like this_ where this_.liked=? limit ? [42122-191]

这是BusinessProcessLike代码的域类:

class BusinessProcessLike {

    BusinessProcess businessProcess

    ServiceUser serviceUser

    boolean liked;

    static constraints = {
        businessProcess nullable: false
        serviceUser nullable: false
        liked nullable: false
    }
}

相比之下,ArticleLike看起来像这样:

class ArticleLike {

    Article article

    ServiceUser serviceUser

    boolean liked;

    static constraints = {
        article nullable: false
        serviceUser nullable: false
    }

}

这可能是什么原因?我已经检查了一些关于同一问题的帖子,但事实上所使用的词是由数据库保留的,但事实并非如此。

此外,这是导致异常的方法:

  @Transactional
    def businessProcessLikeAction(){
        ServiceUser user = springSecurityService.currentUser
        BusinessProcess businessProcess = BusinessProcess.findById(params.getIdentifier())
        //line below throws the exception
        BusinessProcessLike processLike = BusinessProcessLike.findByBusinessProcessAndServiceUser(businessProcess, user);

        if(!processLike){
            processLike = new BusinessProcessLike(businessProcess: businessProcess, serviceUser: user)
        }
        processLike.liked = Boolean.valueOf(params.status)
        processLike.save()
        redirect(action: "showBusinessProcessList")
    }

1 个答案:

答案 0 :(得分:0)

好的,以防有人遇到同样的问题 - 之所以抛出异常是因为在添加新列之前,表中有一个对象,所以问题不在代码,但在我的行为的错误年表中。无论何时我试图对给定的表进行操作,我都有例外,因为GORM希望对表中存在的列执行某些操作,但不会在先前创建的记录中执行。