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
}
}
をUser
とCompany
の間です。そして、私はこのようなテスト書く場合:
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
が失敗したことを示しています。どうして?どこで私は間違えましたか?
は申し訳ありませんが、 –
はクール、それを編集したことを確認することは難しいので、しかし、あなたは、
testCompanyHasManyUser
ためのテストを示し、そしてtestUserAddingHoliday
からの誤差いるを呼び出す前に会社を設定してみてください問題は同じですが、あなたは 'company(nullable:false) 'という検証があるので会社を持たないユーザを保存することはできません。検証を緩和するか、それとも正しいかどうかを判断するには、ユーザをテストに保存する前に会社をユーザに追加してください。 –
今、動作します。私が混乱しているのは、検証部分との間にあります。検証の 'company(nullable:false) '部分を削除しても、前と同じエラーが出ます。なぜそれが間違っているの任意のアイデア? –