深层对象验证

时间:2016-08-17 14:49:48

标签: grails

我有3个班级

class Company {
    String company_name
}

class Job {
    String job_name
    Company company
}
class Person {
    String person_name
    Job job
}

我如何检查某个职位是否真的存在于现有公司并且它是空的(没有人在其上)或者换句话说现有的公司当然存在Job对象,但是没有人在他的构造函数中通过这个Job对象,这就是我所做的,我的错误在哪里?

if (person==null && job != null && company != null)
{
    def query=Job.where{company.company_name == company_name && job_name == job_name}
    def query2=Person.where {job.job_name == job_name}
    if( query == null && query2 != null )
    {
        def person12 = new Person(job: job, person_name: person_name)
        if (person12.validate() && person12.save()) 
        {
            redirect(url: "https//localhost:8080")
        }
    }

1 个答案:

答案 0 :(得分:0)

如果可能,我会以其他方式关联这些类:

class Company {
   String company_name
   static hasMany = [jobs: Job]
}

class Job {
   static belongsTo = [company: Company]
   static hasOne = [person: Person]
   String job_name
}
class Person {
   String person_name
   static belongsTo = [job: Job]
}

然后您可以创建一个标准来了解某个工作是否与人无关。

List<Job> jobs = Job.withCriteria{
   eq('company', companyObject)
   isNull('person')
}

在保存对象之前不需要验证它,导致它在之前自动验证,如果它无效,则返回false。

if (person12.save()) {
   redirect(url: "https//localhost:8080")
}