还有什么可以导致“not-null属性引用瞬态值”?

时间:2015-04-09 04:35:05

标签: hibernate grails gorm

My Grails 2.3.4应用程序具有以下控制器操作:

def delete(Long id) {
    def bookInstance = Book.get(id)
    if (!bookInstance) {
        flash.message = message(code: 'default.not.found.message', args: [message(code: 'book.label', default: 'Book'), id])
        redirect(controller: "book", action: "list")
        return
    }

    try {
        bookInstance.delete(flush: true)
        flash.message = message(code: 'default.deleted.message', args: [message(code: 'book.label', default: 'Book'), id])
        redirect(controller: "book", action: "list", params: [q: book.title])
    }
    catch (DataIntegrityViolationException e) {
        flash.message = message(code: 'default.not.deleted.message', args: [message(code: 'book.label', default: 'Book'), id])
        redirect(action: "show", id: id)
    }
}

这两个域类:

class Book {

    static auditable = true

    String title
    static belongsTo = [author: Author]

    static mapping = {
        author ignoreNotFound: true
    }
}

class Author {

    static auditable = true

    String name
    static hasMany = [books:Book]
}

请注意author ignoreNotFound: true,因为我在这里处理遗留数据库。上述delete操作允许“孤儿”'要删除Book

现在,在两台服务器上部署了与此应用程序完全相同的WAR文件。在一台服务器上删除孤立的Book可以毫无障碍地工作。但是在另一台服务器上,我收到以下错误:

  

not-null属性引用null或transient值:Book.author;   嵌套异常是org.hibernate.PropertyValueException:not-null   属性引用null或transient值:Book.author

我对错误的含义有所了解,但鉴于正在执行相同的代码(并且Book在两种情况下都是孤立的),我会相信可能有某些东西否则(除了动作代码)导致问题出现在一台服务器上而不是另一台服务器上。

知道该找什么?

0 个答案:

没有答案