0

我正在尝试为父/子关系建模。

我有以下域类:

package test
class Person {
Person mother
Person father
String name
static hasOne = [father: Person, mother: Person]
    static constraints = {
        name()
        father(nullable:true)
        mother(nullable:true)
    }   
    def Set<Person> children(){
        return Person.findAllByMother(this)
    }
}

我已经执行了全部生成

但是,如果我尝试创建一个新的 Person,我会收到以下错误:

Message: Parameter "#2" is not set; SQL statement:
insert into person (id, version, father_id, mother_id, name) values (null, ?, ?, ?, ?) [90012-164]
    Line | Method
->>  329 | getJdbcSQLException   in org.h2.message.DbException

应该在哪里生成版本参数?我认为这应该在保存调用期间自动生成。

更新:这个问题似乎与父/母关系有关,因为删除它并重新生成视图意味着元素可以保留。

4

1 回答 1

0

这个问题似乎与我试图在课堂上创建双向关系的事实有关。这实际上不是必需的。存在单向关系 Person -> 父亲和 Person -> 母亲。倒数是在孩子下计算的(我将扩展到包括父亲。)

我的最后一堂课是:

package test
class Person {
    int id
    Person mother
    Person father
    String name
    static constraints = {
        name()
        father(nullable:true)
        mother(nullable:true)
    }

    def Set<Person> children(){
         return Person.findAllByMother(this)
    }
}

我还是 Grails 的新手。

于 2013-02-18T07:17:07.643 回答