2011-12-05 4 views
1

나는 두 개의 도메인 클래스가 있습니다검증 오류, Grails의

사용자 :

class User { 
    String login 
    String password 

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

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

회사 : 나는 한 많은 관계를 정의

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

문제는 사용자가 회사를 보유해야한다고 말한 다음 회사가없는 사용자를 생성하고 저장하려고합니다.

그러나

assert user1.save(failOnError: true) 

를 호출하기 전에 회사를 설정하려고하면 testCompanyHasManyUser에 대한 테스트를 표시하고, testUserAddingHoliday에서 오류, 그래서 그것을 확인하기 위해 열심히했다

+0

죄송 편집 한 그것을 –

+1

쿨의 문제는 동일하게 유지되며, 검증이 'company (nullable : false)'일 때 회사가없는 사용자는 저장할 수 없습니다. 유효성을 완화하거나 올바른 경우 사용자를 테스트 –

+0

에 저장하기 전에 회사를 사용자에게 추가하십시오. 이제 작동합니다. 내가 혼란스러워하는 부분은 유효성 검사 부분과 관련이있다. 유효성 검사'company (nullable : false) '부분을 제거하더라도 이전과 같은 오류가 발생한다. 왜 그게 잘못되어 가고 있는지 아는 사람? –