2016-08-17 84 views
0

我有3个班深对象验证

class Company { 
    String company_name 
} 

class Job { 
    String job_name 
    Company company 
} 
class Person { 
    String person_name 
    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") 
     } 
    } 
+0

工作 - 人际关系是一对一的吗?如果是这样,如果你改变它会容易很多,所以Job中有一个人。所以你只要看看具体职位和公司和工人(Person)的职位是否为空。 –

回答

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') 
} 

你不需要之前验证对象保存它,因为它automatly前验证,如果它是无效的,返回false。

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