我最近更新了Hibernate從5.0到5.1和SchemaExport
API已更改。遷移文檔提到了此更改,但不解釋如何使用較新的API。此外,我還沒有找到任何其他支持樣本來解決這一重大變化。如何在將Hibernate升級到5.1.0後導出模式?
3
A
回答
2
我偶然發現了這個代碼的diff,幫助我解決了API中的差異:https://gitlab.nuiton.org/nuiton/topia/commit/0c57f073ad879a981e9fa3315f0e04669a57858b
這裏是我的代碼,其中出口模式爲標有@Entity標註到輸出窗口的任何類。
static void getDDL(String packageName, String propertiesFile) throws IOException {
MetadataSources metadata = new MetadataSources(
new StandardServiceRegistryBuilder()
.loadProperties(propertiesFile)
.build());
new Reflections(packageName)
.getTypesAnnotatedWith(Entity.class)
.forEach(metadata::addAnnotatedClass);
//STDOUT will export to output window, but other `TargetType` values are available to export to file or to the db.
EnumSet<TargetType> targetTypes = EnumSet.of(TargetType.STDOUT);
SchemaExport export = new SchemaExport();
export.setDelimiter(";");
export.setFormat(true);
export.createOnly(targetTypes, metadata.buildMetadata());
}
0
leojh答案有效並創建了腳本。但掛起並永不停止執行?看起來第一次出口,然後導入。只想要導出...爲什麼Java不退出?
輸出:
INFO Dialect:Using dialect: org.hibernate.dialect.MySQL5Dialect
INFO SchemaExport:Running hbm2ddl schema export
INFO SchemaCreatorImpl:Executing import script 'org.hiber[email protected]1bd39d3c'
類:
String file="export.sql";
try {
MetadataSources metadata = new MetadataSources(new StandardServiceRegistryBuilder()
.loadProperties(new File(DatabaseCreator.class.getClassLoader().getResource("hibernate.cfg.xml").getFile()))
.build());
new Reflections("ch.abc.mapping").getTypesAnnotatedWith(Entity.class).forEach(metadata::addAnnotatedClass);
EnumSet<TargetType> targetTypes = EnumSet.of(TargetType.SCRIPT);
new File(file).delete();
SchemaExport export = new SchemaExport();
export.setDelimiter(";");
export.setFormat(true);
export.setOutputFile(file);
export.execute(targetTypes, SchemaExport.Action.CREATE, metadata.buildMetadata());
System.exit(0);
} catch (Exception e) {
e.printStackTrace();
}
}
相關問題
- 1. Rails 5.1.0如何升級
- 2. SL CLI升級到5.1.0後崩潰
- 3. 將Hibernate 3升級到休眠4.3
- 4. 將Hibernate從版本3.0升級到3.6
- 5. 模板在升級Twig並升級到Symfony 2.8.18後找不到模塊
- 6. 升級hibernate-annotations和hibernate-validator
- 7. 如何將hibernate-validator 4.3.0.Final升級到Glassfish 3.1.2?
- 8. TYPO3 - 從7LTS升級到8LTS後未能完成升級嚮導 - 內存出錯
- 9. Hibernate在模式導出時掛起
- 10. artifactory oss碼頭5.0.0升級到5.1.0現在它不會啓動
- 11. 在hibernate 5.1.0中相當於@LazyGroup的hbm相當於hibernate 5.1.0
- 12. JS「升級」模式
- 13. greenDao模式升級
- 14. 在使用Hibernate時處理模式升級
- 15. Hibernate 4升級(java.lang.NoSuchMethodError:javax.persistence.spi.PersistenceUnitInfo.getValidationMode())
- 16. 將Artifactory從2.3.3.1升級到4.14.3,無需導出/導入
- 17. 從DNN 7.0升級到7.4.1(版本升級包)後出錯
- 18. 我升級到Elixir 1.3後升級Elixir
- 19. 升級到3後Grails升級時間
- 20. 升級到OS X Lion後應如何升級Xcode?
- 21. ParseFacebookUtils在將Parse升級到版本1.13.0後拋出錯誤
- 22. Knockout.js選擇2綁定。將升級後的Select2升級到v4
- 23. 如何升級導軌?
- 24. 升級到5.2後出現錯誤
- 25. 升級到Django1.7 related_names後拋出錯誤
- 26. 升級到Monotouch 4.0後出現MissingMethodException
- 27. 升級到.Net 4.0後出現錯誤
- 28. 升級到Android 2.3後出現問題
- 29. 升級到Django 1.3後,ManyToMany出現FieldError
- 30. Laravel 4.1升級後出現「用戶」模式
您可以比較的兩個標籤中的代碼,這裏是5.1,只需選擇你想要的標籤,看看有什麼變化做:https://開頭github.com/hibernate/hibernate-orm/blob/5.1.0/hibernate-core/src/main/java/org/hibernate/tool/hbm2ddl/SchemaExport.java – Berger
IMO我會分享你有的相關代碼,然後提出需要改變的問題以使其與Hibernate 5.1 API兼容。這將最大限度地發揮可能遇到同樣問題的其他人的有用性。這是非常無益的'遷移指南':http://hibernate.org/orm/documentation/5.1/migration/ – Gimby