通过休眠创建视图

Sai*_*aif 5 java spring annotations hibernate view

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

Mat*_* Kh 5

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>
    
    Run Code Online (Sandbox Code Playgroud)

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


Han*_*Dan 5

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

hibernate.hbm2ddl.import_files
Run Code Online (Sandbox Code Playgroud)

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