Grails 2.1:从自定义Spring配置中设置sessionFactory和dataSource

Grails 2.1:从自定义Spring配置中设置sessionFactory和dataSource,第1张

概述我在Spring中有一个复杂的,自定义配置的Hibernate设置(包括JPA实体,会话工厂和数据源定义),我想在Grails 2.1.0中使用它.因此,我想给Grails一个我已经拥有的sessionFactory和dataSource的引用.所以,我不想(事实上,不能)使用放在conf /中的hibernate.cfg.xml,也不想使用DataSour

我在Spring中有一个复杂的,自定义配置的Hibernate设置(包括JPA实体,会话工厂和数据源定义),我想在Grails 2.1.0中使用它.因此,我想给Grails一个我已经拥有的sessionFactory和dataSource的引用.所以,我不想(事实上,不能)使用放在conf /中的hibernate.cfg.xml,也不想使用DataSource.groovy,因为所有复杂的配置已经通过测试和工作处理我们已经拥有的代码,并且都是基于Spring的.

所以,我设法让我的自定义Spring配置加载到grails run-app上(通过resources.groovy中的importBeans().)在日志中,我可以看到数据库连接,Spring配置和Hibernate启动就好了,所以在运行时,创建了bean到sessionFactory和dataSource.现在,我如何配置Grails使用它们而不是尝试创建自己的?

理想情况下,某些地方的dataSource = ref(‘myDataSource’)会很棒 – 与sessionFactory = ref(‘sessionFactory’)或类似的相同.我见过有些人把它放在resources.groovy中,但它只是不起作用.

我也见过这个:

eventDao(com.JavaClassRequiringDataSource) { dataSource = ref('dataSource') }

但它也不起作用(不确定它是否曾经.)

任何帮助将非常感激…我花了最后10个小时试图让这个工作无济于事.我不介意我丢失一些Grails功能,只要它有效.目前的目标是让GORM看到我们已经拥有的(~200个)实体并做一些脚手架:)

我也知道Grails没有看到这些实体,因为我在bootstrap.groovy中添加了以下内容:

// ...def grailsApplicationdef init = { servletContext ->   println grailsApplication.domainClasses}// ...

它打印[].

如果需要补丁,请告诉我从哪里开始,我会看看……我只想让这个工作.

谢谢!

更新1:

我已经尝试过resources.groovy文件的几个咒语,目前它看起来像这样:

beans = {    importBeans('main-spring-file-for-the-rest.xml')    dataSource = ref('dataSource')}

但是当我试图用脚手架时,我仍然得到:

Error 2012-09-06 00:02:00,768 [Thread-9] ERROR plugins.DefaultGrailsPlugin  - Cannot generate controller logic for scaffolded class x.y.z.Class. It is not a domain class!

(日志行编辑:用x.y.z.Class替换了类的实际名称.)正如我之前所示,实体列表是空的,我看不到设置Hibernate sessionFactory的方法 – 例如

sessionFactory = ref('sessionFactory')

不行.

更新2:

由于bean和实体从spring加载但没有被GORM使用或看到,我能够使用Grails内置的实用程序强制转换实体,并使用resources.groovy配置新bean:

public class TestFix implements ApplicationContextAware {    SessionFactory sessionFactory    ApplicationContext applicationContext    GrailsApplication grailsApplication    def init() {        GrailsHibernateUtil.configureHibernateDomainClasses(sessionFactory,"sessionFactory",grailsApplication)    }}beans = {    importBeans('main-spring-file-for-the-rest.xml')    myBean(TestFix) { bean ->        sessionFactory = ref('sessionFactory')        grailsApplication = ref(GrailsApplication.APPliCATION_ID)        bean.initMethod = 'init'    }}

现在Grails可以看到这些实体,但是脚手架不起作用,因为增强域对象似乎缺少GORM方法(.List()等等.)你会期望GrailsHibernateUtil.configureHibernateDomainClasses()在创建所有方法时添加它们. GrailsHibernateDomainClass类,但要么是静默失败,要么是我遗漏了某些东西(可能没有及早运行?不确定.)任何帮助都非常感激.最佳答案你有没有尝试使用db-reverse-engineer插件?我们在将相当复杂的Spring应用程序迁移到grails(大约90个实体)方面取得了巨大成功. 总结

以上是内存溢出为你收集整理的Grails 2.1:从自定义Spring配置中设置sessionFactory和dataSource全部内容,希望文章能够帮你解决Grails 2.1:从自定义Spring配置中设置sessionFactory和dataSource所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1250826.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存