如何使用jar中带有@grails.persistence.Entity注释的类

如何使用jar中带有@grails.persistence.Entity注释的类,grails,grails-domain-class,Grails,Grails Domain Class,在我的grails项目中,我希望在公共jar文件中使用带有@grails.persistence.Entity注释的域类。但是,当我走上这一步的时候 我添加了hibernate.cfg.xml,如下所示 <!DOCTYPE hibernate-configuration SYSTEM "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration>

在我的grails项目中,我希望在公共jar文件中使用带有@grails.persistence.Entity注释的域类。但是,当我走上这一步的时候

我添加了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>
显然,@实体不起作用。 此外,我的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任务inscar manager:1.2.5-SNAPSHOT就是我的域类的来源

这是我第一次问这个问题^_^

如果我错过了一个更简单/更好的问题解决方案,请有人纠正我

@一道620C,恐怕你现在做的行不通

我推荐两种解决方案(对于您似乎想做的事情,我通常选择第二种方案):

1) JPA实体注释而非Grails实体注释

如果您想遵循这些文档,我相信您的JPA类必须驻留在Grails项目中(JPA注释,而不是Grails@Entity注释)

最简单的方法可能是JPA插件。如果仍然需要动态查找器,请跳到选项2)

2) 使用Grails注入动态查找程序

如果希望从外部jar(非grails项目)导入带有grails注释的实体,则需要执行一些额外的步骤来注入动态查找程序(findAll等)

由于这可能是一篇包含所有细节的长篇文章,我将很快制作一个关于如何做的视频(提示:)

然而,这里有一个简短的答案:

  • 创建一个Groovy项目(我通常使用Gradle作为构建系统)
  • 依赖于Grails Gorm、Grails bootstrap和少量 其他(slf4j、弹簧等)
  • 使用Spring配置(XML或Grails Spring DSL)注入Gorm会话工厂。使用withNewSession或withTransaction或使用服务,您可以使用简单的主类->加载Springbeans以设置Gorm->调用域对象来快速测试动态查找程序
  • 当您构建jar时,编译阶段将增强您的实体以注入动态Gorm方法
如果我错过了一个更简单/更好的问题解决方案,请有人纠正我

@一道620C,恐怕你现在做的行不通

我推荐两种解决方案(对于您似乎想做的事情,我通常选择第二种方案):

1) JPA实体注释而非Grails实体注释

如果您想遵循这些文档,我相信您的JPA类必须驻留在Grails项目中(JPA注释,而不是Grails@Entity注释)

最简单的方法可能是JPA插件。如果仍然需要动态查找器,请跳到选项2)

2) 使用Grails注入动态查找程序

如果希望从外部jar(非grails项目)导入带有grails注释的实体,则需要执行一些额外的步骤来注入动态查找程序(findAll等)

由于这可能是一篇包含所有细节的长篇文章,我将很快制作一个关于如何做的视频(提示:)

然而,这里有一个简短的答案:

  • 创建一个Groovy项目(我通常使用Gradle作为构建系统)
  • 依赖于Grails Gorm、Grails bootstrap和少量 其他(slf4j、弹簧等)
  • 使用Spring配置(XML或Grails Spring DSL)注入Gorm会话工厂。使用withNewSession或withTransaction或使用服务,您可以使用简单的主类->加载Springbeans以设置Gorm->调用域对象来快速测试动态查找程序
  • 当您构建jar时,编译阶段将增强您的实体以注入动态Gorm方法

将hibernate.cfg.xml放在哪里?将hibernate.cfg.xml放在哪里?在我的grails项目中,我想使用jar文件中的类。它由实体注释。但你的建议是把圣杯扔掉。不是我需要的。无论如何,感谢我的grails项目中的一个例子,我想使用jar文件中的类。它由实体注释。但你的建议是把圣杯扔掉。不是我需要的。无论如何,非常感谢
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"
                }