2011-12-05 4 views
1

私は2つのドメインクラスがあります。検証エラー、Grailsの

ユーザー

class User { 
    String login 
    String password 

    static belongsTo = [company: Company] 
    static hasMany = [holidays: Holiday] 

    static constraints = { 
     company(nullable:false) 
    } 
} 

会社:私は1対多の関係を定義している

class Company { 
    String shortName; 
    String name 
    Date dateCreated 
    String region 
    String email 
    Address address 
    Status status 
    Long tel 
    Long fax 

    static hasMany = [ users : User] 

    static constraints = { 
     name(nullable:false, size:6..20, unique:true) 
     shortName(size:2..10, nullable: true, unique:true) 
     region(nullable: true) 
     email(email:true) 
     tel(nullable: false, blank:false) 
     fax(blank:false) 
     address(nullable: false) 
     status(nullable: false) 
     users(nullable:true) 
    } 

    static mapping = { 
     address lazy: false 
     status lazy: false 
    } 
} 

UserCompanyの間です。そして、私はこのようなテスト書く場合:

void testCompanyHasManyUser() { 
    def user1 = new User(login:"anto", password:"secret") 
    assert user1.save(failOnError: true) 
    def company1 = new Company(shortName:"helloworld",name:"helloasd",region:"chennai", 
     email:"[email protected]",tel:23234,fax:343343, address: new 
     Address(country:"india",city:"chennai",street:"thayarst",code:"1233"), 
     status: new Status(name:"FIXED")) 
    assert company1.save() 
    company1.addToUsers(user1) 
} 

を私はこのようなエラーを取得していますテストを実行する場合:

Validation Error(s) occurred during save(): - Field error in object 'mnm.User' on field 'company': rejected value [null]; codes [mnm.User.company.nullable.error.mnm.User.company,mnm.User.company.nullable.error.company,mnm.User.company.nullable.error.mnm.Company,mnm.User.company.nullable.error,user.company.nullable.error.mnm.User.company,user.company.nullable.error.company,user.company.nullable.error.mnm.Company,user.company.nullable.error,mnm.User.company.nullable.mnm.User.company,mnm.User.company.nullable.company,mnm.User.company.nullable.mnm.Company,mnm.User.company.nullable,user.company.nullable.mnm.User.company,user.company.nullable.company,user.company.nullable.mnm.Company,user.company.nullable,nullable.mnm.User.company,nullable.company,nullable.mnm.Company,nullable]; arguments [company,class mnm.User]; default message [Property [{0}] of class [{1}] cannot be null] 
grails.validation.ValidationException: Validation Error(s) occurred during save(): 
- Field error in object 'mnm.User' on field 'company': rejected value [null]; codes [mnm.User.company.nullable.error.mnm.User.company,mnm.User.company.nullable.error.company,mnm.User.company.nullable.error.mnm.Company,mnm.User.company.nullable.error,user.company.nullable.error.mnm.User.company,user.company.nullable.error.company,user.company.nullable.error.mnm.Company,user.company.nullable.error,mnm.User.company.nullable.mnm.User.company,mnm.User.company.nullable.company,mnm.User.company.nullable.mnm.Company,mnm.User.company.nullable,user.company.nullable.mnm.User.company,user.company.nullable.company,user.company.nullable.mnm.Company,user.company.nullable,nullable.mnm.User.company,nullable.company,nullable.mnm.Company,nullable]; arguments [company,class mnm.User]; default message [Property [{0}] of class [{1}] cannot be null] 

    at mnm.UserIntegrationTests.testCompanyHasManyUser(UserIntegrationTests.groovy:21) 

を私はvalidation部分でエラーをした知っています。 companyオブジェクトを保存していても、エラーはuser.saveが失敗したことを示しています。どうして?どこで私は間違えましたか?

答えて

2

問題は、ユーザーが会社を持っていなければならないとし、会社を持たないユーザーを作成して保存しようとしていると考えられます。

は、それが

+0

は申し訳ありませんが、 –

+1

はクール、それを編集したことを確認することは難しいので、しかし、あなたは、testCompanyHasManyUserためのテストを示し、そしてtestUserAddingHolidayからの誤差いる

assert user1.save(failOnError: true) 

を呼び出す前に会社を設定してみてください問題は同じですが、あなたは 'company(nullable:false) 'という検証があるので会社を持たないユーザを保存することはできません。検証を緩和するか、それとも正しいかどうかを判断するには、ユーザをテストに保存する前に会社をユーザに追加してください。 –

+0

今、動作します。私が混乱しているのは、検証部分との間にあります。検証の 'company(nullable:false) '部分を削除しても、前と同じエラーが出ます。なぜそれが間違っているの任意のアイデア? –