0

BootStrap.groovy の開発データの読み込みに問題があります。以前は常にデータをロードしていましたが、grails run-app の実行時に以下のエラーがスローされなくなりました。

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

私の2つのモデルは次のとおりです。

class Portfolio {
   Profile profile

String portfolioName
String portdescrip
Integer portpublished
Date dateCreated
Date lastUpdated

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

BootStrap.groovy ファイル内には、次のものがあります。

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

class BootStrap { 

def init = { servletContext ->

    def profile = new Profile(portfoliohtml:"No",
            portfolioEmail: "ian@ian.com",
            portfolioAdmin:"Ian Neilsen",
            bugzillaproduct:"bz prod name",
            bugzillacomponent:"comp name",
            siteupload:1,
            portfoliocc: "ian@ian.com",
            portfolioColor:"red",
            portfolioFilestore:"blah",
            rtqueue:"queue name",
            teamqueueemail:"ian@ian.com",
            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 エラーのスローを停止しました。

私は何かアイデアを困惑させましたか?

乾杯

4

1 に答える 1

2

いくつかの間違いがあるようです。1 つ (ただし、エラー メッセージは表示されません) は、profileインスタンスをインスタンスportfolioのプロパティに追加しようとすることですportfoliaPortfolioにはプロパティがありませんportfolio

エラーメッセージについては、次のことを試してください。

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

詳細については、grails ドキュメントの多対 1 および 1 対 1 (GORM)セクションを参照してください。

于 2012-10-24T06:40:11.140 に答える