[英]Hibernate entity manager looking for tables in different schemas
我正在 java web 項目中使用 hiberante-entity manager 實現 jpa 持久性。 我在persistence.xml 中設置了以下屬性。
<property name="hibernate.hbm2ddl.auto" value="update"/>
我為每個用戶都有一個架構。 例如,我有一個用於 user1 的架構和一個用於 user2 的架構。 如果表“ABC”存在於 user1 架構中但不存在於 user2 架構中 & 我部署應用程序並且它使用 user2 db 憑據,我會收到消息“user1.ABC”表,因此“ABC”表未在 user2 中創建架構。
當我嘗試在 persistence.xml 文件中使用以下屬性時,該表是在 user2 模式中創建的。
<property name="hibernate.hbm2ddl.auto" value="create"/>
我的問題是,如果應用程序使用 user2 db 憑據,為什么 hibernate 會在另一個模式中搜索,即 user1? 並且我不想在每次服務器啟動時都創建架構,所以我如何避免使用值“create”。
編輯:下面是我的 persistence.xml 文件
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
<persistence-unit name="XXXXXX" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>org.axonframework.saga.repository.jpa.SagaEntry</class>
<class>org.axonframework.saga.repository.jpa.AssociationValueEntry</class>
<properties>
<property name="hibernate.archive.autodetection" value="class"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
</properties>
</persistence-unit>
</persistence>
提前致謝
我也面臨同樣的問題,經過大量挖掘,發現該錯誤與Mysql Connector有關。 將 MySql Connector 6.0.5更改為5.1.28 后,它對我來說很好用。 我希望它可以幫助你。 干杯
這不可能。 他們應該是一些配置錯誤,否則是環境問題。請在此處發布您的配置文件以獲取更多幫助。
干杯!
有同樣的問題。 設置<property name="hibernate.default_schema" value="MY_SCHEMA"/>
后問題就解決了。
您可以嘗試使用此方法來設置特定的架構名稱: <property name="hibernate.default_schema" value="yourSchemaName"/>
為了避免創建架構,您應該嘗試<property name="hibernate.hbm2ddl.auto" value="update"/>
。 會有所幫助
檢查您是否在 Hibernate Sessionfactory 中調用 user1 和 user2。
如果要處理several schemas
正確,然后使用multi-tenant per schema
還,如果你想更新/創建/遷移/手柄columns/tables/schemas/databases
,然后使用flyway
或liquibase
參考文獻
多租戶https://vladmihalcea.com/hibernate-database-schema-multitenancy/
Flyway https://flywaydb.org
Liquibase https://www.liquibase.org
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.