Hibernate Jhipster升级
在我们的组织中,我们有几个Hibernate Jhipster升级,hibernate,spring-security,jhipster,second-level-cache,Hibernate,Spring Security,Jhipster,Second Level Cache,在我们的组织中,我们有几个JHipster生成的项目,它们是用3.0.0版完成的,从那以后我们就没有升级过 在过去的5天里,我一直在努力升级其中一个,请查看下面的细分: 我尝试了三种不同的方法: 1.-使用jhipster:upgrade工具 步骤: 此过程可分为以下几个步骤: 1.-创建本地npm文件夹,以便能够为不同的jhipster版本安装发电机,而不会出现任务问题 2.-清除所有yo和jhipster 3.-克隆项目并创建开发分支 4.-删除.jhipster文件夹,使实体不受升级影响
JHipster
生成的项目,它们是用3.0.0版完成的,从那以后我们就没有升级过
在过去的5天里,我一直在努力升级其中一个,请查看下面的细分:
我尝试了三种不同的方法:
1.-使用jhipster:upgrade
工具
步骤:
此过程可分为以下几个步骤:
1.-创建本地npm
文件夹,以便能够为不同的jhipster
版本安装发电机,而不会出现任务问题
2.-清除所有yo
和jhipster
3.-克隆项目并创建开发分支
4.-删除.jhipster
文件夹,使实体不受升级影响
5.-一旦升级代码运行,我们需要调整几个文件/依赖项,以便mvn清理/安装
工作
并发症
应用所有这些步骤后,我发现来自Hibernate
的2级缓存拒绝工作,要求我在缓存中包含所有类,我尝试了几种修复/解决方法,例如:
1.-从项目中删除liquibase
2.-使用旧设置配置DatabaseConfiguration.java
,并为此下载旧版本的库
3.-将dev.yml
文件配置为与旧版本一样启动
4.-禁用二级缓存
这样做之后,cache
和liquibase
并不代表问题,但是,我们转到另一个复杂问题,这次涉及RememberMe
服务,构造函数的jhipsterpreparities
参数为空,我调试了一会儿,没有发现与此相关的信息,决定放弃此项并尝试使用方法2
2.-手动重新创建升级步骤。
对于此方法,我遵循github中的脚本:
我在本地安装了3.4.0
版本的Jhipster
以尝试平稳过渡,我没有像方法1那样擦除实体,但是现在项目文件无法加载,upgrade\u分支
变得有弹性,无论我做什么,我最终都需要擦除项目并重新克隆它
3.-使用项目根文件夹中的jhipster
命令
我也使用版本3.4.0
升级过程运行平稳,更改了package.json
文件中的版本,并首次尝试链接到数据库(除了必须再次删除liquibase
,这会在升级过程中重新创建)
然而,我们在RememberMe
tokens方面面临一个新问题:custompersistenceremembermeservices]:构造函数抛出异常;嵌套异常为java.lang.IllegalArgumentException:键不能为空或null
一点研究:
有许多报告和git hub通知单表明,jhipster upgrade
无法正常工作,事实上,此时在最新版本上,用户被告知他们可能需要按照此通知单以手动方式升级:
我还咨询了一位前同事,他尝试了这一点,认为创建一个新项目并复制必要的代码比手动迁移升级后产生的冲突代码要容易得多
现在,我也在git hub上看到很多用户似乎都在无缝升级他们的项目,所以我的问题是:
1.-我是否面临与其他开发人员相同的问题,但对技术了解不够,无法解决这些问题
2.-对于此类问题(二级缓存和JhipsterProperties未持有密钥/未作为变量传递给构造函数),是否有解决方案
编辑
我在jhipsterpreproperties
中找到了缺失键的答案。当运行yo jhipster
时,它会询问您是否要覆盖一系列文件,我只是为all标记了yes,因此它重写了应用程序.yml
,其中存储了属性的密钥,而不是还原它或创建一个新的。在从master克隆项目后,我再次尝试运行它,选择不覆盖application.yml
(但覆盖其余文件),运行良好
编辑2
我最终通过以下方式解决了hibernate缓存问题:
1.-手动为CacheConfiguration.java
文件中的所有实体添加缓存,例如:
cm.createCache(org.wwarn.drugquality.domain.AntiretroviralSurveyData.class.getName(), jcacheConfiguration);
cm.createCache(org.wwarn.drugquality.domain.Country.class.getName(), jcacheConfiguration);
所有(48)个实体都是如此
2.-Jhipster团队现在将缓存区域默认为Jhipster配置属性,如下所示:
hibernate.cache.region.factory_class: io.github.jhipster.config.jcache.NoDefaultJCacheRegionFactory
我不得不把它改成这样:
hibernate.cache.region.factory_class: org.hibernate.cache.jcache.JCacheRegionFactory
现在它工作得很好
前端已损坏,许多自定义代码需要修改/替换,但我最终设法将我的项目从v3.0.0
升级到v4.0.8
(使用yo jhipster
命令,因为升级工具不适合我),现在应用程序在后端运行顺利,并且准备缓慢迁移到Angular 2-4
升级的大部分问题都与Windows和yarn有关。如果您使用Linux或OSX,并且npm<5,那么您的状态会更好
而且,如果您经常运行它,问题将比您经历的大版本飞跃更容易解决
这个工具非常有用,但它还是相对较新的,随着时间的推移,事情会变得更好
您只需阅读即可手动运行
upgrade
中的步骤,这很容易理解和阅读。如果没有细节,您的第二个问题很难回答。通常最好将问题拆分。4.-Erase.jhipst