Grails没有定义null



我有一个Grails项目。它的域对象是从现有的WordPress数据库逆向工程的。

我有一个名为WpPosts的类,它看起来像这样:

Date postDate
//[...] lots of stuff here which is not important
Long commentCount
static mapping = {
    version false
   //more blah blah
}
static hasOne = [postAuthor: WpUsers, postParent: WpPosts]
static hasMany = [childPosts: WpPosts]
static constraints = {
        postParent nullable: true
//even more blah blah blah
    }

所以Post可以有Post作为子Post。但是一个帖子不一定要有一个Parent。在数据库中,如果没有定义父id,则父id为0。如果我试图得到我的帖子现在grails试图得到一个id为0的父。这是不存在的。所以我得到了

Method threw 'org.hibernate.ObjectNotFoundException' exception.

我当然可以把parent定义为长值。但我会失去很多安慰。所以这不是我想要的解决方案。

提前感谢您的回答!

编辑:我现在的问题是,如果我做错了什么。或者我可以定义0为空对象吗?

处理这种情况的一种方法可能是拦截getPostParent方法调用并实现自己的加载逻辑。例如:

class WpPosts {
  Date postDate
  //[...] lots of stuff here which is not important
  Long commentCount
  static mapping = {
    version false
   //more blah blah
  }
  static hasOne = [postAuthor: WpUsers, postParent: WpPosts]
  static hasMany = [childPosts: WpPosts]
  static constraints = {
    postParent nullable: true
    //even more blah blah blah
  }
  WpPosts getPostParent(Long id) {
    if (id == 0) return null
    return WpPosts.get(id)
  }
}

我还没有试过,但它可能会帮助你克服你的问题。

相关内容

  • 没有找到相关文章