在 postgresql 9.3 中验证到 MATERIALIZED VIEW 的映射时出现 HibernateException
HibernateException when validating mapping to MATERIALIZED VIEW in postgresql 9.3
如何将对象映射到物化视图并保持 <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 中询问类型 "VIEW" 和 "TABLE",而 postgresql 将其存储为 "MATERIALIZED VIEW"(使用普通 [=36 检查=]).
令人惊讶的是,我无法在 google 中找到有关此错误的一些信息。有没有办法在启动时保持休眠验证,也许有办法让一个 table/entity 未验证?
休眠版本:4.2.12.Final
Postgresql 驱动程序:9.3-1101-jdbc41
实体没有任何特定注释,只有
@javax.persistence.Entity
@javax.persistence.Table(name = "table_name", schema = "schema")
这不是驱动程序问题,而是休眠错误。
对于使用 spring-boot-starter-data-jpa 并在 application.yml 文件中使用 ddl-auto: validate
的用户,您需要添加 hibernate.hbm2dll.extra_physical_table_types: "MATERIALIZED VIEW"
到您的属性:
spring:
datasource:
~~~
jpa:
hibernate:
ddl-auto: validate
~~~
properties:
hibernate:
~~~
hbm2dll:
extra_physical_table_types: "MATERIALIZED VIEW"
我提到这个是因为我尝试了很多次才把它放在正确的位置。
如何将对象映射到物化视图并保持 <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 中询问类型 "VIEW" 和 "TABLE",而 postgresql 将其存储为 "MATERIALIZED VIEW"(使用普通 [=36 检查=]).
令人惊讶的是,我无法在 google 中找到有关此错误的一些信息。有没有办法在启动时保持休眠验证,也许有办法让一个 table/entity 未验证?
休眠版本:4.2.12.Final
Postgresql 驱动程序:9.3-1101-jdbc41
实体没有任何特定注释,只有
@javax.persistence.Entity
@javax.persistence.Table(name = "table_name", schema = "schema")
这不是驱动程序问题,而是休眠错误。
对于使用 spring-boot-starter-data-jpa 并在 application.yml 文件中使用 ddl-auto: validate
的用户,您需要添加 hibernate.hbm2dll.extra_physical_table_types: "MATERIALIZED VIEW"
到您的属性:
spring:
datasource:
~~~
jpa:
hibernate:
ddl-auto: validate
~~~
properties:
hibernate:
~~~
hbm2dll:
extra_physical_table_types: "MATERIALIZED VIEW"
我提到这个是因为我尝试了很多次才把它放在正确的位置。