Grails的自举:法无签名:* .addTo *适用(Grails BootStrap: No s

2019-11-03 09:22发布

我有两个领域类:用户

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: 'arun@email.com').save(failOnError: true)
Profile arunProfile = new Profile(firstName: 'Arun', lastName: 'Allamsetty').addToUser(arun).save(failOnError: true)

可有人请指出错误(或多个)。 我相信这是愚蠢的。

Answer 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: 'arun@email.com', 
                     profile: arunProfile).save()


文章来源: Grails BootStrap: No signature of method: *.addTo* applicable