我正在使用Oracle Timesten 11数据库,我必须从我的应用程序中删除一列。我在开始时尝试使用SchemaUpdate,但它没有用。然后我使用SchemaExport的execute方法删除列;虽然drop列成功,但它最终删除了表中的所有记录。另外,我使用.jar文件作为输入来创建/删除/修改表。请帮我解决这个问题。
答案 0 :(得分:1)
从我的角度来看,如果您希望从应用程序执行DDL操作,那么JDBC就是您的选择。 SchemaUpdate的目的应该是在业务模型和数据库物理结构之间执行同步。
修改强>
刚才发现您可能通过删除字段来更新您的业务模型(实体),并且想知道为什么它没有反映在您的数据库中。 SchemaUpdate将创建新的列(和表),但不会删除从实体中删除的列。
<强> EDIT2 强>
然后我使用SchemaExport的execute方法删除列;虽然 drop column成功了,它最终删除了所有记录 桌子。
您似乎使用了不“更新”的架构导出策略,而是在创建SessionFactory时删除现有表并创建新表(请参阅Hibernate属性hibernate.hbm2ddl.auto
,很可能将值设置为{{ 1}})。