如何将对象映射到物化视图并保持<prop key="hibernate.hbm2ddl.auto">validate</prop>
在启动webapp时,我在启动时得到了以下异常:
Caused by: org.hibernate.HibernateException: Missing table: subjects_lp at org.hibernate.cfg.Configuration.validateSchema(Configuration.java:1302) at org.hibernate.tool.hbm2ddl.SchemaValidator.validate(SchemaValidator.java:155) at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:512) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1797) ...
根据消息来源,hibernate只要求在DatabaseMetadata#getTableMetadata中输入“视图”和“表”,而postgresql则将其存储为“物化视图”(使用普通jdbc检查)。
令人惊讶的是,我在谷歌上找不到关于这个错误的一些信息。是否有办法在启动时保持hibernate验证,也许有办法使一个表/实体不被验证?
Hibernate版本: 4.2.12.Final
Postgresql驱动程序:9.3-1101-jdbc 41
实体没有任何特定的注释,只有
@javax.persistence.Entity @javax.persistence.Table(name = "table_name", schema = "schema")
发布于 2015-02-05 22:50:45
这不是驱动程序问题,而是hibernate漏洞。
发布于 2020-12-01 07:22:47
对于那些使用spring starter jpa并在其application.yml文件中使用application.yml的用户,您需要在属性中添加hibernate.hbm2dll.extra_physical_table_types: "MATERIALIZED VIEW"
:
spring:
datasource:
~~~
jpa:
hibernate:
ddl-auto: validate
~~~
properties:
hibernate:
~~~
hbm2dll:
extra_physical_table_types: "MATERIALIZED VIEW"
我之所以提到这一点,是因为我花了很多时间才把它放在正确的位置。
https://stackoverflow.com/questions/27965218
复制相似问题