有没有办法从现有数据库模型生成实体,还是我必须自己创建所有带有yeoman(yo)的实体?
我从Spring Roo项目中听说过这样一种技术。
答案 0 :(得分:5)
不,你不能,因为jhipster yeoman发生器“只”根据模板+给定的参数/选择来支撑实体。它不会在此步骤中询问数据库等外部来源。
生成器为jpa,angular和liquibase更改日志创建所有文件。最后,liquibase在启动期间使用changelogs创建表,如果它们尚不存在的话。
所以,你可以说jhipster使用“实体优先”而不是“表优先”方法。
虽然这将是一个很好的功能,但我认为它不会被集成到jhipster中,因为现有的数据库是如此不同以至于难以处理每种可能性。主键有不同的选择,不同的数据类型,多对多关系或概括的不同实现等等。 或者你可以在Github上申请一个新功能,也许它会被实现......
但是,要给出一些指示: 我也有同样的情况,我尝试将大约50个表和大量数据迁移到jhipster(这是jhipster 1.6左右)的现有数据库,我还想到了“数据库重构”[1]。但是,我的“解决方案”是使用jhipster创建一个新数据库,然后使用一些sql语句将数据从旧数据库迁移到新数据库。 主要原因:
是的,roo有这样一种技术用于逆向工程或重构数据库(http://docs.spring.io/spring-roo/reference/html/base-dbre.html)。 AFAIK,它只创建基于JPA的符合roo的实体。因此,它也与jhipster使用的弹簧数据JPA不同(与[1]等其他jpa-refectoring工具一样的问题)
[1]我使用了一个eclipse JPA插件,它可以在另一个基于dropwizard的项目中从现有数据库创建jpa实体类。但是,我没有尝试与Spring / Jhipster结合使用。
[2]可以从现有数据库创建liquibase更改日志:http://www.liquibase.org/documentation/generating_changelogs.html
答案 1 :(得分:4)
Spring Roo包含DBRE插件,这是一个用于自动生成域实体的数据库逆向工程的绝佳工具。
@eplog你错了,DBRE允许你使用 - repository 选项为每个实体创建Spring Data JPA存储库。看看http://docs.spring.io/spring-roo/docs/1.3.1.RELEASE/reference/html/base-dbre.html#d4e1765
Imho,DBRE为您提供的好处是:希望它有所帮助。与Roo一起享受!
答案 2 :(得分:4)
请检查此助手
https://www.npmjs.com/package/generator-jhipster-db-helper
根据该助手的描述“此JHipster模块使在现有数据库上的映射更加容易。”
您也可以使用此工具:
https://github.com/Blackdread/sql-to-jdl
它将把您的sql文件转换为idl文件,然后您可以使用jHipster import-idl功能来导入数据库。
这将帮助您加快使用现有数据库生成时髦应用程序的过程
答案 3 :(得分:0)
可以!
查看此堆栈溢出答案:
How to modify existing entity generated with jhipster?
然后,请观看此视频,以使用Eclipse和JBoss工具从现有模式中自动生成JPA注释的域对象。
创建Hibernate配置文件后,可以打开“代码生成工具”,在“导出器”选项卡上,确保选中“使用Java 5语法”和“ EJB3”注释的复选框。
https://www.youtube.com/watch?v=KO_IdJbSJkI
此外,请确保您的休眠jar与您的配置具有相同的数字,在我的情况下,我正在执行Hibernate Spatial,并且版本与Hibernate-Core不匹配,并且一分钟内无法正常工作。>