对象' objname'中的归档错误在字段上:' fieldname' :被拒绝的值[null];

时间:2014-10-29 07:55:00

标签: hibernate grails groovy grails-domain-class grails-controller

我是初学者,我想创建一个类似于twitter的应用程序

我有3个域类,即用户,推文和关注者。

关注者域名是维护两个用户之间的链接以便彼此跟随。

当我对关注者执行save()时会抛出以下错误,我无法弄清楚我出错的地方:

  

对象' mail.Follower'中的字段错误在字段'关注者':被拒绝的值[null];代码[mail.Follower.follower.nullable.error.mail.Follower.follower,mail.Follower.follower.nullable.error.follower,mail.Follower.follower.nullable.error.mail.User,mail.Follower.follower。 nullable.error,follower.follower.nullable.error.mail.Follower.follower,follower.follower.nullable.error.follower,follower.follower.nullable.error.mail.User,follower.follower.nullable.error,邮件。 Follower.follower.nullable.mail.Follower.follower,mail.Follower.follower.nullable.follower,mail.Follower.follower.nullable.mail.User,mail.Follower.follower.nullable,follower.follower.nullable.mail。 Follower.follower,follower.follower.nullable.follower,follower.follower.nullable.mail.User,follower.follower.nullable,nullable.mail.Follower.follower,nullable.follower,nullable.mail.User,可为空]。参数[follower,class mail.Follower];默认消息[类[{1}]的属性[{0}]不能为空]   对象' mail.Follower'中的字段错误在字段'用户':被拒绝的值[null];代码[mail.Follower.user.nullable.error.mail.Follower.user,mail.Follower.user.nullable.error.user,mail.Follower.user.nullable.error.mail.User,mail.Follower.user。 nullable.error,follower.user.nullable.error.mail.Follower.user,follower.user.nullable.error.user,follower.user.nullable.error.mail.User,follower.user.nullable.error,邮件。 Follower.user.nullable.mail.Follower.user,mail.Follower.user.nullable.user,mail.Follower.user.nullable.mail.User,mail.Follower.user.nullable,follower.user.nullable.mail。 Follower.user,follower.user.nullable.user,follower.user.nullable.mail.User,follower.user.nullable,nullable.mail.Follower.user

这是我的代码

域名

package mail

class User {
    String name
    String email
    String password
    int age

static constraints = {
    name blank:false
    email blank:false
    password blank:false
    age blank:false

    }
static hasMany=[tweets:Tweets,followers:Follower]



}

粉丝域名

package mail

class Follower {
    User follower
static constraints = {
    follower nullable:false

}
static belongsTo=[user:User]


}

这是追随者控制器

package mail
import grails.converters.JSON
class FollowerController {


static allowedMethods = [save: "POST", update:"POST", delete:"POST",authenticate:"POST"]

def responseBody =[:]

def index() {}

def list(){
    render Follower.list(sort:"dateCreated",order:"desc") as JSON
}

def get(Long id)
{
    def followerInstace=Follower.get(id)
    render followerInstace as JSON
}

def save()
{
  def followerInstace=new Follower(request.JSON)
  def user=User.get(session.loggedInUser.id)
  println user
  if(followerInstace.save(flush:true))
  {
      user.addToUser(followerInstace.id)
      responseBody.message="saved successfully"
     responseBody.id=followerInstace.id
     responseBody.code=200
     render responseBody as JSON
     return
  }
  println followerInstace.errors
  responseBody.message="save not successfull"
   responseBody.code=400
  println responseBody
  render responseBody as JSON
}

def show(Long id)
{
    def followerInstance=Follower.get(id)
    if(followerInstance)
    {
        responseBody.code=200
        resoponseBody.mesage="file found"
        responseBody.followerInstance=followerInstance
        render responseBody as JSON
    }
    else
    {
        responseBody.code=404
        responseBody.message="Not Found"
        render responseBody as JSON
        return
    }
}


def delete(Long id)
{
    def followerInstace= Follower.get(id)
    followerInstace.delete()
    responseBody.message = "successfully deleted"
    render responseBody as JSON
}
def update(Long id,Long version)
{
    def followerInstance = Follower.get(id)
    followerInstance.properties = params

    if(followerInstance.save(flush:true))
    {
        responseBody.message="successfully updated"
        responseBody.code = 200
        responseBody.id = followerInstance.id
    }
    else {
        responseBody.code = 400
        responseBody.message = 'Some error(s) exist'
    }
    render responseBody as JSON
}

}

2 个答案:

答案 0 :(得分:0)

在控制器中试用此代码:

def followerInstace=new Follower(request.JSON)
  def user=User.get(session.loggedInUser.id)
  followerInstanse.follower = user
  if(followerInstace.save(flush:true))
  {...

此异常因为字段关注者为空而

答案 1 :(得分:0)

我用一种简单的方式想出来,我发送了一个id到save方法而不是整个对象,因为它是我要保存的两个用户之间的链接......

def save(Long id)
{
  def followerInstace=new Follower(request.JSON)
  def user=User.get(session.loggedInUser.id)
  User use=User.get(id)
  followerInstace.followers=use
  followerInstace.user = User.get(session.loggedInUser.id)

  if(followerInstace.save(flush:true))
  {

      responseBody.message="saved successfully"
     responseBody.id=followerInstace.id
     responseBody.code=200
     render responseBody as JSON
     return
  }
  println followerInstace.errors
  responseBody.message="save not successfull"
   responseBody.code=400
  println responseBody
  render responseBody as JSON
}

现在我将结果正确存储在db