Hibernate不会自动为您创建视图,因为每种方言仅支持基础数据库的数据定义语言(DDL)的有限子集。基本上,它支持足够的DDL来生成工作模式,但不足以处理诸如视图之类的“额外”对象的创建。
但是,一切都不会丢失。Hibernate确实使您能够自己在XML映射文件中创建(和删除)其他数据库对象,并且可以将这些对象的作用域限定为特定的方言。例如,我可以有一个像这样的映射:
<hibernate-mapping> <class name='com.mycompany.myproduct.Customer' table='tbl_customer'> <id name='id' column='customer_id'> <generator /> </id> <property name='name' length='50' unique='true' not-null='true' /> </class> <database-object> <create>create or replace view read_only_cust...</create> <drop>drop view read_only_cust</drop> <dialect-scope name='org.hibernate.dialect.Oracle9Dialect' /> </database-object></hibernate-mapping>
您可以通过添加更多的“数据库对象”部分来随意创建所需的其他视图。您必须为要支持的每个数据库自己编写SQL(DDL),但是由于它们的作用域是方言,因此Hibernate将仅对模式导出时选择的方言执行SQL。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)