使用Groovy 1.8和Hibernate JPA注释构建失败

3

使用Groovy 1.8和Hibernate JPA注解构建失败。

由于JPA注解构建错误,我被困在使用Groovy 1.7.0并且无法升级到众多更新的境地。

我的代码是标准的JPA注解,在以前的Groovy版本中运行良好。我想升级到Groovy 1.8.0。如果有人看到并解决了这个问题,我将非常感激你的帮助!

似乎所有@ManyToMany注解的@JoinTable部分都无法编译。它会显示“注释值必须是注释”的消息。我已经查看了JPA javadocs,并且似乎没有漏掉任何必需的字段。我的注解在以前的版本中工作正常。

此外,我正在使用Gant进行构建,我不排除它可能是一个可能的问题?

以下是一个示例映射:

@ManyToMany(mappedBy='topics')
@JoinTable(name="screencast_topic",
 joinColumns=[@JoinColumn(name="topicId")],
 inverseJoinColumns=[@JoinColumn(name="screenCastId")])
@Sort(type=SortType.NATURAL)

编译输出:

[groovyc] Compiling 412 source files to /Users/ben/workspace/nofluff/build/webapps/ROOT/WEB-INF/classes
 [groovyc] org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
 [groovyc] Abnormal termination of javac.
 [groovyc] /var/folders/rs/rsmW8feBHJyH6EPl+V3XME+++TI/-Tmp-/groovy-generated-1581380806855929206-java-source/nfjs/model/Topic.java:84: <b>annotation value must be an annotation</b>
 [groovyc] @org.apache.struts2.json.annotations.JSON(serialize=false) @javax.persistence.ManyToMany(mappedBy="topics") @javax.persistence.JoinTable(inverseJoinColumns={"org.codehaus.groovy.ast.AnnotationNode@7997f538"}, name="screencast_topic", joinColumns={"org.codehaus.groovy.ast.AnnotationNode@67646de5"}) @org.hibernate.annotations.Sort(type=org.hibernate.annotations.SortType.NATURAL) public  java.util.SortedSet<nfjs.model.screencast.Screencast> getScreencasts() { return (java.util.SortedSet<nfjs.model.screencast.Screencast>)null;}
1个回答

2

Groovy开发人员已经意识到了这个问题(http://jira.codehaus.org/browse/GROOVY-4768)。看起来修复程序已经准备好在下一次发行中发布。当前的解决方法是自己构建Groovy并进行测试。


Andres..很高兴你参加了UberConf。能够与你交谈并了解更多信息真是太好了。问题的概要是存在一个关于联合编译(编译Groovy和Java源代码)的问题。将所有代码都改为Groovy可以解决这个问题。幸运的是,我剩下的Java源代码很少,所以很容易将其转换为Groovy。我认为这是一个大问题,因为它使得已有Java项目转换为Groovy变得困难。这可能对Groovy的采用率不利。 - Ben

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接