通过休眠创建视图

时间:2013-03-05 04:21:09

标签: java spring hibernate view annotations

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

2 个答案:

答案 0 :(得分: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>
    
  3. 在我看来,第一种解决方案更容易处理,因为我目前正在使用这种方法来处理我的观点。

答案 1 :(得分:3)

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

hibernate.hbm2ddl.import_files

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