回答
JPA不提供「即時」模式更新(當然不適用於實體類的動態更新)。
某些提供程序將允許在創建EMF(例如DataNucleus JPA)時添加列,以便可以重新加載實體類。這就是全部。除此之外,重新構建您的應用程序
嗯...明白了,也許重新設計師是唯一的方式。謝謝。 – helloworld1234
有幾種方法可以做到這一點,主要是通過persistence.xml
中的屬性。一種標準的方法是使用javax.persistence.schema-generation.scripts.create-script-source
,這可能會或可能不會在您每次啓動web應用程序時運行,最有可能導致啓動時出現異常並可能導致數據被破壞。
在Hibernate中,您可以根據您的實體使用hibernate.hbm2ddl.auto
至update
來更新您的表格。
在那裏的EclipseLink是eclipselink.ddl-generation
財產。 create-or-extend-tables
設置似乎是適當的。
http://www.eclipse.org/eclipselink/documentation/2.4/jpa/extensions/p_ddl_generation.htm
然而,一般來說,使用JPA保持你的模式是比預先寫好的腳本在更新生產服務器的Web應用程序時手動更新它不太可靠。
- 1. 通過JPA
- 2. 通過JPA
- 3. 通過EJB 3.0,JPA
- 4. 通過JPA /休眠
- 5. 如何通過JPA
- 6. 如何通過JPA
- 7. 春天JPA通過REST
- 8. 的Java JTable中通過JPA
- 9. 要通過彈簧JPA
- 10. JPA @OrderBy()通過關係表
- 11. Spring數據JPA。通過在
- 12. JPA通過調用函數添加額外字段
- 13. 通過BindingSource向DataGridView添加新條目
- 14. 通過循環向TableLayoutPanel添加列表
- 15. JPA CRITERIA查詢通過加入列的順序
- 16. 如何通過使用Spring數據JPA
- 17. JPA集團通過與多個現場
- 18. JPA與Spring MVC通過註釋配置
- 19. JPA /休眠 - ConstraintViolationException通過刪除元素
- 20. JPA休眠createNativeQuery所有通過setParameter
- 21. 如何通過JPA存儲樹結構?
- 22. 瞭如何通過JPA的Java
- 23. 如何通過JPA持久化java.util.Set?
- 24. JPA通過`@ IdClass`使用`Enum`作爲`@ Id`
- 25. JPA Hibernate通過ID和版本查找
- 26. JPA通過ID不是實體
- 27. 通過html向mysql表中添加新值
- 28. 通過終端添加列
- 29. 通過添加+
- 30. 通過MySQL Workbench將新列添加到現有表中
我認爲最簡單的解決方案可能是找到解決方法,以便需要用戶修改數據庫模式。你能否介紹一下業務邏輯? –
由於用戶(客戶端)無法直接與數據庫模式通信,所以這就是爲什麼我希望實現這種方式來允許在客戶端更新數據庫... – helloworld1234
這並不真正回答我的問題。爲什麼客戶端會被允許修改數據庫模式?例如,如果允許添加新列,那麼如何防止惡意攻擊?您現在必須擔心流氓用戶通過創建數千個列來進入桌面並使其爆炸。 –