2016-08-17 8 views
0

は、私は3つのクラスディープオブジェクト検証

class Company { 
    String company_name 
} 

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

位置は本当に既存の会社から既存され、それが空いている(何人がそれにされていない)、または他の言葉で既存のジョブがある場合、どのように確認することができますを持っています既存の会社を持つオブジェクトですが、PersonはコンストラクタでこのJobオブジェクトを渡していません。ここでは何をしましたか?私のミスはどこですか?

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] 
} 

をそして、あなたは仕事が関連する一切の人を持っていないかどうかを知るために基準を作成することができます

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

ジョブ - 人関係は1対1ですか?もしそうなら、あなたがそれを変更した方がずっと簡単なので、JobにPersonがあります。特定のタイトルと会社を持つ仕事がどこにあり、従業員(Person)がnullであるかを調べます。 –

答えて

0

可能であれば私は他の方法でクラスを関連付けます。

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

それはautomatly前に検証し、それが有効でない場合、falseを返す原因あなたは、それを保存する前にオブジェクトを検証する必要はありません。

if (person12.save()) { 
    redirect(url: "https//localhost:8080") 
} 
関連する問題