使用hibernate.hbm2ddl.auto属性创建表时是否有任何方法可以创建视图。我使用注释类型来定义表及其字段。是否有任何属性可用于通过hibernate创建视图?
答案 0 :(得分:5)
Hibernate不会自动为您执行此操作。但是,其中一个解决方案可能对您有用:
在数据库中创建一个视图,并使用hibernate定义包含这些列的模型。如果找到此视图,Hibernate不会为该模型创建表。剩下的就像使用真正的桌子一样。
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>
在我看来,第一种解决方案更容易处理,因为我目前正在使用这种方法来处理我的观点。
答案 1 :(得分:3)
另一种选择是通过配置属性将视图创建sql放在由hbm2ddl运行的脚本中
hibernate.hbm2ddl.import_files
假设您有一个代表该视图的实体,您必须在创建视图之前执行删除表,因为如果没有找到该名称的现有视图,hbm2ddl将创建一个表。