我正在使用 Oracle Timesten 11 DB,我必须从我的应用程序中删除一列。我一开始尝试使用 SchemaUpdate,但没有成功。然后我使用 SchemaExport 的 execute 方法删除列;虽然删除列成功了,但它最终删除了表中的所有记录。此外,我使用 .jar 文件作为输入来创建/删除/修改表。请帮我解决这个问题。
最佳答案
从我的角度来看,如果您希望从应用程序执行 DDL 操作,那么 JDBC 是可行的方法。 SchemaUpdate 的目的应该是在您的业务模型和数据库物理结构之间执行同步。
编辑
刚刚发现您可能通过删除字段更新了您的业务模型(实体),并且想知道为什么它没有反射(reflect)在您的数据库中。 SchemaUpdate 将创建新列(和表),但不会删除从您的实体中删除的列。
EDIT2
Then I used SchemaExport's execute method to drop the column; Though the drop column was succesful, it ended up deleting all the records in the table.
您似乎使用了不“更新”的模式导出策略,而是在创建 SessionFactory 时删除现有表并创建新表(请参阅 Hibernate 属性 hibernate.hbm2ddl.auto
,大多数可能的值设置为 create-drop
)。
关于java - 使用 hibernate 删除/删除列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6941774/