在我的grails项目中,我想使用@ grails.persistence.Entity注释在公共jar文件中使用域类。但是当我按照doc from grails site
中的步骤进行操作时我添加喜欢
的hibernate.cfg.xml<!DOCTYPE hibernate-configuration SYSTEM
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<mapping package="com.books" />
<mapping class="com.books.Book" />
</session-factory>
</hibernate-configuration>
到grails-app / conf / hibernate /目录。 但是当我启动项目时,它会报告错误日志:
2013-04-11 14:24:53,928 - org.codehaus.groovy.grails.web.context.GrailsContextLoader -20516 [pool-5-thread-1] ERROR - Error executing bootstraps: groovy.lang.MissingMethodException: No signature of method: static com.baoxian.task.inscar.entity.QuoteTask.findById() is applicable for argument types: (java.lang.Long) values: [2851]
Possible solutions: find(), findAll(), findAll(groovy.lang.Closure), find(groovy.lang.Closure)
org.codehaus.groovy.runtime.InvokerInvocationException: groovy.lang.MissingMethodException: No signature of method: static com.baoxian.task.inscar.entity.QuoteTask.findById() is applicable for argument types: (java.lang.Long) values: [2851]
Possible solutions: find(), findAll(), findAll(groovy.lang.Closure), find(groovy.lang.Closure)
at grails.util.Environment.evaluateEnvironmentSpecificBlock(Environment.java:300)
at grails.util.Environment.executeForEnvironment(Environment.java:293)
at grails.util.Environment.executeForCurrentEnvironment(Environment.java:269)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: groovy.lang.MissingMethodException: No signature of method: static com.baoxian.task.inscar.entity.QuoteTask.findById() is applicable for argument types: (java.lang.Long) values: [2851]
Possible solutions: find(), findAll(), findAll(groovy.lang.Closure), find(groovy.lang.Closure)
at BootStrap$_closure1.doCall(BootStrap.groovy:22)
... 8 more
Disconnected from the target VM, address: '127.0.0.1:63383', transport: 'socket'
Process finished with exit code 1
很明显@Entity不起作用。 此外,我的BuildConfig.groovy喜欢:
compile ('com.baoxian:baoxian-task-inscar-manager:1.2.5-SNAPSHOT')
{
excludes "org.grails", "org.slf4j", "xml-apis","mysql","org.hibernate","hsqldb","hibernate-annotations","org.quartz-scheduler","org.springframework"
}
com.baoxian:baoxian-task-inscar-manager:1.2.5-SNAPSHOT就是我的域名来自
这是我第一次在stackoverflow上提问。 ^ _ ^
答案 0 :(得分:1)
如果我错过了一个更简单/更好的问题解决方案,请有人纠正我。
我推荐2个解决方案(对于您似乎想要做的事情,我通常选择第二个选项):
1) JPA实体注释不是Grails实体注释
如果你想关注文档,我相信你的JPA类必须驻留在Grails项目中(JPA注释,而不是grails @Entity 注释)。
最简单的路径可能是JPA插件http://grails.org/JPA+Plugin。如果您仍然需要动态查找器,请跳转到选项2)。
2) Gorm ouside Grails注入动态查找器
如果你想从外部jar(非Grails项目)导入 grails带注释的实体,你需要一些额外的步骤来注入动态查找器( findAll ,等)。
由于它可能是一篇包含所有细节的长篇文章,我将很快创建一个关于如何操作的视频(提示:http://www.grails.org/GORM+-+StandAlone+Gorm)。
但是,这是一个简短的回答: