Grails域对象命名约定打破GORM映射

时间:2016-02-24 15:27:45

标签: grails gorm naming-conventions grails-domain-class

我有一个对象Job,它被子类化为许多jobTypes。 Job类引用了许多其他工作:

class Job {
    static hasMany = [related: Job, ...]
    static mappedBy = [related:'related']

    ...
}

这会生成一个查找表JOB_RELATED,用于保存作业之间的引用。

当我创建一个名为(例如)Job的单独的(不扩展的Subcontractor)域对象时,会出现问题。我偶然也有一个名为SubcontractorSomething的作业类型

class Subcontractor {
    ...
}

class SubcontractorSomething extends Job {
    ...
}

现在,当我调用我的方法添加相关作业时,一切正常(在调试器中,对象使用相关作业更新)并且没有抛出错误,但JOB_RELATED表未更新!

def updateRelated = {

    jobInstance.properties = params//this adds the job to related as expected

    if (!jobInstance.hasErrors() && jobInstance.save(flush: true, validate:false)) {
        flash.message = "Yea! It Worked"//object is good and debugger shows the relation
        redirect(action: "show", id: jobInstance.id)
    }
    else {
        render(view: "addRelated", model: [jobInstance: jobInstance])
    }
}

呈现重定向页面时,不会显示新的相关作业。此外,数据库中的表不会更新。

我已经通过删除SubcontractorSomething类进行了实验。删除后,一切都按预期工作。我还添加了课程,但名字不同。在这种情况下,一切都按预期工作。但是,每当我添加一个名为Subcontractor + anything的类时,映射都会以某种方式被破坏,并且表将不会更新。所以,我的问题是:

  • grails中是否存在导致我的数据库的命名约定 映射被打破?

我一直无法找到这样的功能,但我知道Grails做的就像这样(即XYZController)

0 个答案:

没有答案