2012-10-24 2 views
0

개발 데이터를로드하는 BootStrap.groovy에 문제가 있습니다. 이전에는 항상 데이터를로드했지만 grails run-app를 실행할 때 아래 오류가 발생하지 않았습니다.Grails - BootStrap.groovy - null 포인터 문제

Message: Validation Error(s) occurred during save(): 
- Field error in object 'spotlight.content.Profile' on field 'portfolio': rejected value [null]; 

My 2 모델은 다음과 같습니다.

class Portfolio { 
    Profile profile 

String portfolioName 
String portdescrip 
Integer portpublished 
Date dateCreated 
Date lastUpdated 

와 나는 다음을 가지고있는 BootStrap.groovy 파일 내에서

class Profile { 
    static belongsTo = [portfolio: Portfolio] 

String portfoliohtml 
String portfolioEmail 
String portfoliocc 
String portfolioAdmin 
String portfolioFilestore 
String portfolioColor 
String bugzillaproduct 
String bugzillacomponent 
String rtqueue 
String teamqueueemail 
String etherpadurl 
Integer siteupload 
Date dateCreated 
Date lastUpdated 

;

import java.util.Date; 
import spotlight.content.Profile 
import spotlight.content.Portfolio 

class BootStrap { 

def init = { servletContext -> 

    def profile = new Profile(portfoliohtml:"No", 
      portfolioEmail: "[email protected]", 
      portfolioAdmin:"Ian Neilsen", 
      bugzillaproduct:"bz prod name", 
      bugzillacomponent:"comp name", 
      siteupload:1, 
      portfoliocc: "[email protected]", 
      portfolioColor:"red", 
      portfolioFilestore:"blah", 
      rtqueue:"queue name", 
      teamqueueemail:"[email protected]", 
      etherpadurl:"http://url.com", 
      ).save(failOnError: true) 

    def portfolio = new Portfolio(portfolioName:"Portfolio 1", 
          portdescrip:"portfolio descrition field", 
          portpublished:1, 
          portfolio:profile).save(failOnError: true) 

} 

행운을 빌어 포트폴리오 개체에 내 프로필 개체를 추가하는 모든 구현을 시도했습니다. 내가 이전에 말했듯이 이것은 효과가 있었고 이제는 null 오류를 던지기를 멈췄다.

저에게 어떤 아이디어가 부족한가요?

건배

답변

2

몇 가지 실수가있는 것 같습니다. portfolia 인스턴스의 portfolio 속성에 profile 인스턴스를 추가하려고합니다 (오류 메시지가 발생하지 않음). Portfolio에는 등록 정보가 없습니다. portfolio.

당신의 ErrorMessage가 관련하여, 다음과 같은 시도 :

def portfolio = new Portfolio(portfolioName:"Portfolio 1", ...) 
portfolio.profile = new Profile(...) 
portfolio.save(failOnError: true) 

를 추가 읽기를 들어, Grails의 워드 프로세서의 Many-to-one and one-to-one (GORM) 섹션을 확인합니다.

+0

아 정말 감사드립니다. 늦은 오후에 방금 테이블 위에서 머리를 두드리는 소리를 멈췄습니다. 아직도 이것이 이전에 효과가 있었던 이유는 여전히 나를 혼란스럽게합니다. 나는 모델 프로필을 siteprofile througout에서 응용 프로그램으로 변경했으며 그 이후로 지구의 얼굴을 떨어 뜨리기로 결정했습니다. 아직도 grails를 배우기. 고마운 친구 – IanN