在Grails中自动绑定Java类失败

时间:2014-06-06 06:57:56

标签: grails grails-domain-class grails-controller

我有一个与几个Java类集成的Grails(2.3.8)项目。当我尝试dataBind一对多关系时,我收到以下错误:

{
  "errors": 
  [
    {
      "object": "com.sample.Author",
      "message": "No such field: referencedPropertyType for class: org.codehaus.groovy.grails.orm.hibernate.GrailsHibernateDomainClassProperty"
    }
  ]
}

有谁知道为什么数据绑定函数试图绑定“referencePropertyType”?

我已经包含了我的项目的简化版本,并在src / java文件夹中添加了作者和图书。

Author.java

@Entity
public class Author {

    private long _id;
    private List<Books> _books;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "author")
    public List<Book> getBooks() {
        return _books;
    }

    // getters and setters

}

Book.java

@Entity
public class Book {

    private long _id;
    private Author author;

    @ManyToOne(fetch = FetchType.LAZY, optional = false)
    @JoinColumn(name = "AUTHOR_ID", foreignKey = @ForeignKey(name = "author_fk"), nullable = false)
    public Author getAuthor() {
        return _author;
    }

    // getters and setters

}

hibernate.cfg.xml中

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory>
        <mapping class="com.sample.Author" />
        <mapping class="com.sample.Book" />
    </session-factory>

</hibernate-configuration>

AuthorController.groovy

class AuthorController {

    def doSomething() {
        def authorInstance = new Author(params)

        if(authorInstance.hasErrors()) {
            println authorInstance.errors as JSON
        }
    }
}

2 个答案:

答案 0 :(得分:0)

  

有谁知道数据绑定函数试图绑定的原因   &#34; referencePropertyType&#34;

数据绑定功能并未尝试绑定referencedPropertyType。绑定器正在尝试检索该值,因为该值有助于数据绑定器确定在数据绑定期间需要创建哪些类型的对象。

在使用Hibernate插件时,在某些情况下,Java域模型可能存在错误。如果您在https://jira.grails.org/browse/GRAILS提交错误报告并附上一个简单的示例应用,我们会将其理顺。

不好意思。

答案 1 :(得分:0)

将我的项目从2.3.8升级到2.4.0后,问题已得到解决。看起来这是一个错误,但升级项目解决了这个问题。