在Grails中自动绑定Java类失败
我有一个Grails(2.3.8)项目,它与一些Java类集成。尝试数据绑定一对多关系时,收到以下错误:在Grails中自动绑定Java类失败,grails,grails-domain-class,grails-controller,Grails,Grails Domain Class,Grails Controller,我有一个Grails(2.3.8)项目,它与一些Java类集成。尝试数据绑定一对多关系时,收到以下错误: { "errors": [ { "object": "com.sample.Author", "message": "No such field: referencedPropertyType for class: org.codehaus.groovy.grails.orm.hibernate.GrailsHibernateDomainClassP
{
"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
}
@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>
有人知道为什么数据绑定函数要绑定吗
“referencePropertyType”
数据绑定函数未尝试绑定referencedPropertyType。绑定器正在尝试检索该值,因为该值有助于数据绑定器确定在数据绑定期间需要创建哪些类型的对象
在使用Hibernate插件时,在某些情况下,Java域模型可能存在错误。如果您在上提交一个bug报告并附加一个简单的示例应用程序,我们将解决它
很抱歉给您添麻烦。将我的项目从2.3.8升级到2.4.0后,问题已经解决。看起来这是一个bug,但是升级项目解决了这个问题。你不想用Grails的方式来做吗?使用域类?不幸的是,这不是这个项目的选项。我需要使用的类与其他java应用程序共享。是否可以通过在类中专门添加该字段来临时解决问题?它通常是什么样子的?不。系统没有在类中查找referencedPropertyType。系统正在GrailsHibernateDomainClassProperty中查找referencedPropertyType字段。我认为问题在于系统正在寻找一个字段,而它也应该支持一个属性。如果你用一个简单的应用程序提交JIRA来重现问题,我可以修复它。我在2.4.0中创建了一个示例应用程序,但没有发现问题,所以我升级了我的应用程序,它似乎已经解决了。
class AuthorController {
def doSomething() {
def authorInstance = new Author(params)
if(authorInstance.hasErrors()) {
println authorInstance.errors as JSON
}
}
}