使用现有数据库进行Hibernate

时间:2011-02-02 17:10:55

标签: java hibernate spring-mvc spring-roo

我正在尝试使用hibernate和oracle数据库构建一个spring roo项目。 oracle数据库包含另一个应用程序使用的表。

我有一个实体用户已存在于数据库中,包含数千个用户并由另一个应用程序共享。

我的新roo项目包含用户实体以及其他一些实体。 persistence.xml配置了以下属性:

<property name="hibernate.hbm2ddl.auto" value="update"/>

在第一次部署应用程序时,hibernate失败,因为实体没有表。将值更改为“create”会修复此问题,但会擦除用户表:(

有解决方法吗?我想做的是这个

  1. 属性值为“create”,但以某种方式排除User实体
  2. 部署应用程序,创建表等。使用现有用户表。
  3. 停止申请
  4. 将属性值修改为“更新”
  5. 没有数据丢失:)
  6. 非常感谢。

2 个答案:

答案 0 :(得分:2)

必须有一个更好的方法来做到这一点,但这里有一个快速的黑客,它将让你按照你想要的步骤滚动:

  1. 将Hibernate映射中的表重命名为user_unused
  2. 将属性值修改为create
  3. 部署应用程序,创建表等,现有user表未更改。
  4. 停止申请
  5. 将Hibernate映射中的表重命名为user
  6. 将属性值修改为update
  7. 删除在步骤1中由Hibernate创建的user_unused数据库表

答案 1 :(得分:0)

我记得来自一些hibernate论坛,这个功能还没有来自hibernate。所以这是另一个黑客。您可以对'creat'使用false,对'update'使用true。当然,你需要在这种情况下配置所有课程。