Grails,查询自引用表

时间:2013-05-21 02:38:55

标签: grails gorm

我有一个带有自引用字段的表:

Class Book{

    Integer id
    String name
    Book version
}

当我添加没有“版本”的书籍时,版本字段为空 现在我必须在Book表中查询没有版本的记录(它们的版本字段为空),以下代码将不起作用:

def results = Book.withCriteria{
    eq("version", "null")
} 

但我得到了这个例外:

org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of Book.id

我应该使用什么查询?

1 个答案:

答案 0 :(得分:3)

version是GORM中用于乐观锁定的关键字。修改您的domaincriteria,如下所示,以使条件返回适当的结果。

//域

class Book {
    Integer id
    String name
    Book bookVersion
}

//标准

def book = new Book(name: "test", version: null)
book.id = 1
book.save(flush: true)

def results = Book.withCriteria{
    isNull("bookVersion")
}

assert results && results[0] instanceof Book

另请注意,问题中的bookVersion类型为Book,无法与String null进行比较。