6

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

4

2 回答 2

6

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>
    

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

于 2013-03-05T05:03:43.100 回答
3

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

hibernate.hbm2ddl.import_files

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

于 2013-11-08T17:35:34.953 回答