Grails-数据绑定一对一关联不起作用

Grails-数据绑定一对一关联不起作用,grails,data-binding,associations,one-to-one,grails-domain-class,Grails,Data Binding,Associations,One To One,Grails Domain Class,我试图做一个直接的数据绑定,它涉及一对一关联中的两个域类。以下是两个类: class Request { static hasOne = [form: Form] Form form } class Form { static belongsTo = [request: Request] String string } 然后我做下面的数据绑定,这是为了说明问题。。。真正的数据绑定来自一个表单: Request request = new Request() request

我试图做一个直接的数据绑定,它涉及一对一关联中的两个域类。以下是两个类:

class Request
{
  static hasOne = [form: Form]

  Form form
}

class Form
{
  static belongsTo = [request: Request]

  String string
}
然后我做下面的数据绑定,这是为了说明问题。。。真正的数据绑定来自一个表单:

Request request = new Request()
request.properties = ['form.string': 'string value']
但是,我最终得到的请求对象的表单属性为null,而不是表单属性中包含表单对象和字符串值的请求对象。

试试这个

class Request
{
  Form form
}

class Form
{
  static belongsTo = [request: Request]

  String string
}

事实证明,问题不在于实际的类,而在于传递给数据绑定的映射。即使根据Grails文档,以下内容也应该有效:

Request request = new Request()
request.properties = ['form.string': 'string value']
没有。但是,如果我将贴图更改为,我将获得正确的绑定:

Request request = new Request()
request.properties = [form: [string: 'string value']]

不幸的是,这没有什么区别,仍然是相同的问题。如果您使用的是持久性数据库,则需要为此更改生成迁移。您要定义表单属性两次,static hasOne=[form:form]定义属性,您不需要在下面添加表单。如果这不起作用,请尝试向请求类添加static mappedBy=[form:'none'],这也将生成一个迁移。我创建了两个与您的示例相同的类,并重新创建了数据库中的所有表,因此不必担心迁移,不幸的是仍然存在相同的问题。绑定永远不会创建表单对象。我也尝试过添加mappedBy的想法,但仍然存在相同的问题。我将request用作实例名称时遇到了类似的问题,我更改了req之类的名称,它开始工作