【问题标题】:Creating views through hibernate通过休眠创建视图
【发布时间】:2013-02-19 09:06:09
【问题描述】:

在使用 hibernate.hbm2ddl.auto 属性创建表时,有什么方法可以创建视图。我正在使用注释类型来定义表及其字段。是否有任何属性可用于通过休眠创建视图?

【问题讨论】:

    标签: java spring hibernate view annotations


    【解决方案1】:

    另一种选择是将视图创建 sql 放入由 hbm2ddl 通过配置属性运行的脚本中

    hibernate.hbm2ddl.import_files
    

    假设您有一个代表该视图的实体,您必须在创建视图之前执行一个删除表,因为如果 hbm2ddl 找不到具有该名称的现有视图,它将创建一个表。

    【讨论】:

      【解决方案2】:

      Hibernate 不会自动为您执行此操作。但是,以下解决方案之一可能对您有用:

      1. 在您的数据库中创建一个视图,并使用 hibernate 定义一个包含这些列的模型。如果 Hibernate 找到这个视图,它不会为那个模型创建一个表。其余的就像使用真正的桌子一样。

      2. Hibernate 确实使您能够在 XML 映射文件中自己创建(和删除)其他数据库对象。像这样的。

        <database-object>
           <create>create or replace view yourView</create>
           <drop>drop view yourView</drop>
           <dialect-scope name='org.hibernate.dialect.Oracle9Dialect' />
        </database-object>
        

      在我看来,第一个解决方案更容易处理,因为我目前正在使用这种方法来处理我的观点。

      【讨论】:

      • 感谢您的回复..所以我们应该在通过hibernate创建所有表后手动创建视图。一旦表创建成功,我们必须运行视图创建查询..我是对的..?
      • 是的,如果hibernate 为您的视图创建了一个表,请不要忘记删除它。强烈建议为此类视图创建脚本。
      • 感谢您的回复..尝试通过休眠创建视图。但我做不到..所以你的想法是最好的。
      猜你喜欢
      • 2014-07-16
      • 1970-01-01
      • 2019-10-24
      • 1970-01-01
      • 1970-01-01
      • 2014-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多