2014-10-14 2 views
0

У меня есть два класса домена: ПользовательGrails Bootstrap: Нет подписи метода: * .addTo * применимо

class User { 

    String username 
    String password 
    String email 
    Date dateCreated 
    Date lastUpdated 

// static belongsTo = [profile: Profile] 

    static constraints = { 
     username size: 3..20, unique: true, nullable: false, validator: { _username -> 
      _username.toLowerCase() == _username 
     } 
     password size: 6..100, nullable: false, validator: { _password, user -> 
      _password != user.username 
     } 
     email email: true, blank: false 
//  profile nullable: true 
    } 
} 

и профиля:

class Profile { 

    String firstName 
    String middleName 
    String lastName 
    byte[] photo 
    Date dateCreated 
    Date lastUpdated 

    static belongsTo = [User] 

    static constraints = { 
     firstName blank: false 
     middleName nullable: true 
     lastName blank: false 
     photo nullable: true, maxSize: 2 * 1024**2 
    } 
} 

Профиль может принадлежать только одному пользователю и а пользователь может иметь (или принадлежать?) только одному профилю. Когда я пытаюсь создать объекты в BootStrap.groovy в текущей настройке, я получаю сообщение об ошибке, что метод addTo() не существует. Я не знаю, что я делаю неправильно. Это, как я создаю их в BootStrap.groovy:

User arun = new User(username: 'arun', password: 'password', email: '[email protected]').save(failOnError: true) 
Profile arunProfile = new Profile(firstName: 'Arun', lastName: 'Allamsetty').addToUser(arun).save(failOnError: true) 

Может кто-то пожалуйста, указать на ошибку (ы). Я уверен, что это глупо.

ответ

1

требуется строгое двунаправленное один-один отношение, как вы запросили для: (? Или принадлежит)

Профиль может принадлежать только одному пользователю, и пользователь может иметь только один профиль

Три модификации в основном требуется в классах домена:

//User.groovy 
static hasOne = [profile: Profile] 

static constraints = { 
    profile unique: true 
} 

//Profile.groovy 
User user 

Выше би-directianl один-один отношение. Вам больше не нужно addTo* при создании каждого из них.

Profile arunProfile = new Profile(firstName: 'Arun', lastName: 'Allamsetty') 

User arun = new User(username: 'arun', password: 'password', 
        email: '[email protected]', 
        profile: arunProfile).save() 
+0

Это сработало! Благодаря! – aa8y

Смежные вопросы