grails - 用外键插入Grails Domain对象

标签 grails model-view-controller groovy gorm

我有两个域类:

class User {
Client client
String firstName
String lastName
String email
String password
String address
String city
String state
String zip
String phone
Integer active
Date changedate

static belongsTo = [client : Client]

static constraints = {
    firstName(nullable: false, blank:false)
    lastName(nullable: false, blank:false)
    email(nullable: false, blank: false)
    address(nullable:false,blank:false)
    city(nullable:false,blank:false)
    state(nullable:false,blank:false)
    zip(nullable:false,blank:false)
    phone(nullable:false,blank:false)
    active(nullable:false,blank:false)
    changedate(nullable:false,blank:false)
}

}
class Client {
String name
String webaddress
String address
String city
String state
String zip
String phone
Integer active
Date changedate

static constraints = {
    name(unique:true, nullable: false, blank:false)
    address(nullable:false,blank:false)
    city(nullable:false,blank:false)
    state(nullable:false,blank:false)
    zip(nullable:false,blank:false)
    phone(nullable:false,blank:false)
    active(nullable:false,blank:false)
    changedate(nullable:false,blank:false)
}

}

现在,这两个表已生成,并且从用户到客户端都存在一个外键。尽管阅读了grails帮助文档,但我仍然无法终生,但他们却想出了如何在相应的客户端中插入用户记录。这是我 Controller 中的当前代码。客户端正确插入,但不会插入用户记录。
def register(){

    Client newClient = new Client (
        name: params.Company,
        webaddress: params.WebAddress,
        address: params.CompanyAddress,
        city: params.CompanyCity,
        state: params.CompanyState,
        zip: params.CompanyZip,
        phone: params.CompanyPhone,
        active: 1,
        changedate: new Date()          
    )
    newClient.save()
    User user =  new User (
        client: newClient,
        firstName: params.FirstName,
        lastName: params.LastName,
        email: params.userName,
        password: params.Password,
        address: params.Address,
        city: params.City,
        state: params.State,
        zip: params.Zip,
        phone: params.Phone,
        active: 1,
        changedate: new Date()
    )
    user.save()

}

最佳答案

尝试以下代码,它将指出将对象保存到db时验证问题的确切位置:

def register(){

    Client newClient = new Client (
            name: params.Company,
            webaddress: params.WebAddress,
            address: params.CompanyAddress,
            city: params.CompanyCity,
            state: params.CompanyState,
            zip: params.CompanyZip,
            phone: params.CompanyPhone,
            active: 1,
            changedate: new Date()
    )
    if(newClient.save(flush: true)){
        User user =  new User (
                client: newClient,
                firstName: params.FirstName,
                lastName: params.LastName,
                email: params.userName,
                password: params.Password,
                address: params.Address,
                city: params.City,
                state: params.State,
                zip: params.Zip,
                phone: params.Phone,
                active: 1,
                changedate: new Date()
        )
        if(!user.save(flush: true)){
            user.errors.each {
                println it
            }
        }
    }
    else {
        newClient.errors.each {
            println it
        }
    }
}

关于grails - 用外键插入Grails Domain对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32019850/

相关文章:

java - 我应该使用哪个框架(Grails、Java/Spring)?

没有 Controller 的Angularjs

jsp - Java EE 错误 : javax. enterprise.inject.UnsatisfiedResolutionException:Api 类型

groovy - 用 Spock stub void 方法

grails - Google API:阅读文档

grails - Font Awesome无法加载资源/font/fontawesome-webfont.woff?v=3.0.1

grails - 如何在 Grails 项目中创建全局变量

php - 通过 href 发送变量

java - JMeter - 如何使用响应断言作为我的 If Controller 的条件

groovy - 是否可以在 Groovy 中定义新的运算符?