Java 通过hibernate创建视图

Java 通过hibernate创建视图,java,spring,hibernate,view,annotations,Java,Spring,Hibernate,View,Annotations,在使用hibernate.hbm2ddl.auto属性创建表时,是否有任何方法可以创建视图。我使用注释类型定义表及其字段。是否有任何属性可用于通过hibernate创建视图?hibernate不会自动为您创建视图。但是,以下解决方案之一可能对您有用: 在数据库中创建视图,并使用hibernate使用这些列定义模型。如果Hibernate找到此视图,则不会为该模型创建表。剩下的就像使用一张真正的桌子 Hibernate使您能够自己在XML映射文件中创建(和删除)其他数据库对象。像这样的 <d

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

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>
    
    
    创建或替换视图yourView
    放下你的观点
    

  • 在我看来,第一种解决方案更容易处理,因为我目前正在使用此方法处理我的视图。

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

    hibernate.hbm2ddl.import_files
    

    假设您有一个表示该视图的实体,您必须在创建视图之前创建一个drop table,因为hbm2ddl将在未找到该名称的现有视图时创建一个表。

    感谢您的回复。因此,我们应该在通过hibernate创建所有表之后手动创建视图。一旦表创建成功,我们就必须运行视图创建查询。我说得对吗?是的,如果
    hibernate
    为您的视图创建了一个表,请不要忘记删除它。强烈建议为此类视图创建脚本。感谢您的回复。尝试通过hibernate创建视图。但是我做不到,所以你的想法是最好的。