2013-04-14 71 views
0

我的應用程序使用JPA創建數據庫表。我想使用JPA和/或EclipseLink API以編程方式刪除這些表(不使用DROP TABLE命令)。 刪除由JPA框架創建的數據庫表的正確方法是什麼?以編程方式刪除數據庫表

+0

類似的,可以參考 - http://stackoverflow.com/a/2731513/366964 –

回答

0

如果您能夠使用JPA 2.1,則可以指定提供程序編寫或讀取腳本來刪除表,從而控制執行的內容。不幸的是,除非你可以動態編寫你自己的drop table腳本,否則它不會給你很好的紋理控制。

如果不使用特定於提供者的代碼,那麼刪除特定表的唯一方法就是使用原生SQL。

在EclipseLink中,您將從EntityManager獲取會話並創建一個新的SchemaManager(會話)。有了它,你可以調用dropDefaultTables()來刪除持久單元中的所有表,或使用dropObject(DatabaseObjectDefinition)來刪除單個DatabaseObjectDefinition對象,這些對象用於表示表,存儲過程等等。您可以使用getDefaultTableCreator(boolean generateFKConstraints)來獲取PU的默認表格創建者。有了它,您可以使用getTableDefinitions()獲取表示PU中表的所有DatabaseObjectDefinition對象,以便您可以選擇一個放棄。

http://wiki.eclipse.org/EclipseLink/FAQ/JPA#How_to_access_table.2C_column_and_schema_information_at_runtime.3F 顯示如何解開EM以獲取會話。