2016-12-28 11 views
0

전에 저장해야합니다 나는이 새로운 자회사를null이 아니 숙박 시설은 과도 값을 참조 - 과도 인스턴스가 현재 작업

def save(Subsidiary subsidiary) { 

    System.out.println(params) 
    def usuario = new User(name:params.name,surname:params.surname,address:params.address,cellphone:params.cellphone,gender:params.gender,username:params.username,password:params.password,pc:params.pc) 
    usuario.save flush:true 
    def subsidiaria= new Subsidiary(name:params.namesub,user:usuario) 


    subsidiaria.save flush:true 



    request.withFormat { 
     form multipartForm { 
      flash.message = message(code: 'default.created.message', args: [message(code: 'subsidiary.label', default: 'Subsidiary'), subsidiary.id]) 
      redirect view: 'create' 
     } 
     '*' { respond subsidiary, [status: CREATED] } 
    } 
} 

I를 만드는 동안

  class User { 

Boolean accountLocked 
String password 
Boolean passwordExpired 
Boolean enabled 
String username 
String name 
String surname 
String gender 
String urlPicture 
String cellphone 
String address 
Integer pc 
String permission 
String email 
Date created 
Boolean accountExpired 

static hasMany = [customerOnlines: CustomerOnline, 
        partners: Partner, 
        roles: Role, 
        salesmans: Salesman, 
        subsidiaries: Subsidiary] 

static mapping = { 
    tablePerHierarchy false 
    id generator: 'identity' 
    table '`user`' 
    password column: '`password`' 
    email unique: true 
} 

static constraints = { 
    accountLocked nullable: true, default: false 
    password nullable: true 
    passwordExpired nullable: true, default: false 
    enabled nullable: true, default: true 
    username nullable: true, maxSize: 45 
    name nullable: true, maxSize: 45 
    surname nullable: true, maxSize: 100 
    gender nullable: true, maxSize: 15 
    urlPicture nullable: true 
    cellphone nullable: true, maxSize: 50 
    address nullable: true 
    pc nullable: true 
    permission nullable: true 
    created nullable: true 
    accountExpired nullable: true, default: false 
} 

    class Subsidiary { 

String subsidiaryName 
Date dob 
User user 

static hasMany = [partners: Partner, 
        phones: Phone, 
        salesmans: Salesman] 
static belongsTo = [Partner, User] 

static mapping = { 
    id generator: "identity" 
    version false 
} 

static constraints = { 
    subsidiaryName nullable: true, maxSize: 100 
    dob nullable: true 
} 

문제는 다음과 같은 도메인 null이 아닌 속성 참조 null 또는 일시적인 값을 subsidiaria.save flush:true에 얻을 수 있지만 문제를 찾을 수 없으며 심지어 내가 usuario.addToSubsidiaries(subsidiaria).save()을 사용하더라도 여전히 작동하지 않으며 계속 동일한 오류가 발생합니다.

답변

0

나는 문제가 컨트롤러 자체에 있었다 발견, 불행히도 나는 즉시 내가

 user.save flush:true 
    user.addToSubsidiaries(subsidiary) 
    user.save flush:true 

후 두 테이블 모두가 그런 식으로 저장이

 user.accountLocked=params.accountLocked 
    user.password=params.password 
    user.passwordExpired=params.passwordExpired 
    user.enabled=params.enabled 
    user.username=params.username 
    user.name=params.name 
    user.surname=params.surname 
    user.gender=params.gender 
    user.urlPicture=params.urlPicture 
    user.cellphone=params.cellphone 
    user.address=params.address 
    user.pc=params.pc 
    user.permission=params.permission 
    user.email=params.email 
    user.created=params.created 
    user.accountExpired=params.accountExpired 

처럼 두 테이블의 모든 PARAMS을 넣어했다 grails가 동시에 두 개의 다른 빈을 처리 할 수 ​​없었던 것처럼 새로운 정보가 제공되어 업데이트되었습니다.