![](/img/trans.png)
[英]Multi-tenancy using single database multiple schema with Hibernate and Spring Boot saving data to wrong schema
[英]Hibernate Multi tenancy issue with H2: wrong schema
我正在構建一個在生產中使用PostgreSQL的應用程序,以及使用最新版本的Hibernate和Java 8進行本地開發和測試的H2。
該實現適用於PostgreSQL,但在使用H2時會導致問題。 如果我調用同一個端點為2個不同的租戶創建實體,則所有實體都是在調用的相同(第一個)模式中創建的。
我的MultiTenantConnectionProviderImpl中的getConnection():
@Override
public Connection getConnection(String tenantIdentifier) throws SQLException {
final Connection connection = getAnyConnection();
connection.setSchema(tenantIdentifier);
return connection;
}
application.properties:
spring.datasource.url=jdbc:h2:mem:mydb;MODE=PostgreSQL;DATABASE_TO_LOWER=TRUE
spring.datasource.username=sa
spring.datasource.password=
請注意,即使將正確的 tenantIdentifier
傳遞給getConnection,查詢仍會針對錯誤的架構運行。
這可能是Hikari連接池緩存連接而不傳播setSchema()
調用的問題嗎?
看起來這是H2的一個錯誤,它的查詢緩存沒有取代模式的變化。
完全禁用查詢緩存會解決此問題:
jdbc:h2:mem:mydb;MODE=PostgreSQL;DATABASE_TO_LOWER=TRUE;QUERY_CACHE_SIZE=0
創建了一個錯誤報告: https : //github.com/h2database/h2database/issues/1952
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.