回答
如果您將generateDdl
設置爲Hibernate(如果它是底層實現),那麼它會根據您當前的方言生成數據庫模式。所以在改變方言後它會自動生成數據庫。
其他JPA提供程序可能具有不同的屬性。
這是正確的,但它沒有解決模式遷移的問題。 – HDave 2010-07-09 02:22:20
@HDave - 相反。模式被複制到新的數據庫,反映當前的數據模型。 – Bozho 2010-07-09 05:18:07
通過模式遷移,我相信OP意味着有一些腳本可以將現有的數據庫與數據結合起來,並將其與新的實體/模式進行更新。通常這需要仔細研究模式更改以及某些時候卸載/重新加載數據,以便FK可以更改,PK可以拆分等.Hibernate可以生成腳本來創建新模式。 Hibernate也可以生成一個腳本來修改一箇舊的模式,使其成爲一個新的模式,但它假定數據庫沒有數據 - 儘管如此,我的理解是,由於「問題」,很少使用該功能。 – HDave 2010-07-09 15:02:53
簡短的回答是沒有。
如果你改變你的bean,那麼你將不得不手動遷移現有的模式。所以對於Rails風格的數據庫遷移,你將不得不在別處尋找。
然而,您可以輕鬆地從Java bean生成初始的ddl。下面的例子演示模式創建與EclipseLink的2.0版:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="JPATestPU" transaction-type="RESOURCE_LOCAL">
<provider>
org.eclipse.persistence.jpa.PersistenceProvider
</provider>
<class>org.randompage.MyEntity</class>
<properties>
<property name="javax.persistence.jdbc.user" value="johndoe"/>
<property name="javax.persistence.jdbc.password" value="secret"/>
<property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:h2:~/.h2/testdb;FILE_LOCK=NO"/>
<property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>
<property name="eclipselink.logging.level" value="INFO"/>
</properties>
</persistence-unit>
</persistence>
的關鍵因素這裏是
<property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>
這告訴的EclipseLink放棄現有的表,並從JPA映射產生新的一次。這個過程是高度特定於供應商的,所以對於其他JPA供應商(Hibernate,OpenJPA ...),您將不得不諮詢他們的特定文檔。
我不會依賴JPA提供程序來更新數據庫模式。 檢查Liquibase爲好方法之一。
- 1. JPA實時數據庫模式遷移支持工具?
- 2. Django本身支持遷移
- 3. 使用Doctrine2和PostgreSQL進行多數據庫模式和遷移
- 4. 使用Qt4進行數據庫遷移(模式更改)
- 5. 使用OEM CC進行Oracle模式遷移12c
- 6. 使用Phalcon和模式名稱的外鍵進行遷移?
- 7. 不支持使用JPA更新查詢進行DML操作
- 8. 分支混帳,運行的遷移,並保持該模式功能
- 9. 使用無事務,傳播支持和OpenEntityManager模式的JPA行爲不一致
- 10. 如何使用Minion任務遷移進行數據庫遷移
- 11. 使用MagicalRecord進行手動遷移
- 12. 如何使用DBFlow進行遷移?
- 13. 使用SQLite進行Laravel遷移
- 14. 使用CoreData進行雙向遷移
- 15. 使用PowerShell進行Microsoft Exchange遷移
- 16. 使用遷移演進數據模式的方法
- 17. JBoss從v4遷移到v7,支持EJB2.1
- 18. 遷移處理不支持的類型
- 19. 將compileSdkVersion 22遷移到23而不支持棉花糖支持
- 20. Django datetime.datetime轉爲十進制不支持遷移
- 21. 實體框架或Telerik數據訪問是否支持數據遷移? (不是模式遷移)
- 22. 使用新數據庫進行項目遷移的設計模式
- 23. 如何在sorm中進行數據庫模式遷移?
- 24. 如何在Android中進行數據庫模式遷移?
- 25. 如何以不同模式進行遷移?
- 26. Rails模式沒有通過遷移進行更新
- 27. Django South - 同時進行模式和數據遷移
- 28. 使用MicrosoftML進行CUDA支持R
- 29. 南遷移使不正確的初始模式遷移
- 30. 對CakePHP模式shell或遷移中的外鍵的任何支持?
我最近閱讀了關於JPA的書。 JPA 2.1於2013年發佈,它現在是否支持遷移? – AechoLiu 2014-12-11 03:14:53