[英]How to use multiple databases with ebean
我正在嘗試使用 Ebean 框架 ORM 查詢不同的 postgres 數據庫。 按照這些和這些文檔,對我的單個數據庫的查詢工作正常。 但要解決另一個問題,我必須通過 DB.byName("name") 顯式調用它。 如何避免這種顯式調用?
為了清楚起見,第一個例子——事實上,第二個——我希望它是:
QDbEmailQueue(DB.byName("superadmin")).findCount()
有效
QDbEmailQueue().findCount()
拋出下一個異常:
Query threw SQLException:ERROR: relation "email_queue" does not exist Position: 22 Bind values:[] Query was:select count(*) from email_queue t0 javax.persistence.PersistenceException: Query threw SQLException:ERROR: relation "email_queue" does not exist Position: 22 Bind values:[] Query was:select count(*) from email_queue t0
在這兩種情況下,我都像在 kotlin 中那樣配置了我的實體類:
@Entity
@DbName(value = "superadmin")
@Table(name = "email_queue")
class DbEmailQueue(
@Id
val emailQueueId: Int
...
): Model("superadmin")
在這兩種情況下,EbeanConfigProvider.java 的配置相同,如下所示:
public class EbeanConfigProvider implements ServerConfigProvider {
public static final String SUPERADMIN = "superadmin";
public static final String DB = "db";
@Override
public void apply(ServerConfig serverConfig) {
DataSourceConfig dataSourceConfig = serverConfig.getDataSourceConfig();
dataSourceConfig
.setUsername(Config.INSTANCE.getAppDbUserName())
.setPassword(Config.INSTANCE.getAppDbUserPswd());
switch (serverConfig.getName()) {
case DB: {
serverConfig.setDefaultServer(true);
dataSourceConfig.setUrl(Config.INSTANCE.getAppDbHostUrl() + Config.INSTANCE.getAppDbName());
break;
}
case SUPERADMIN: {
serverConfig.setDefaultServer(false);
dataSourceConfig.setUrl(Config.INSTANCE.getAppDbHostUrl() + Config.INSTANCE.getSuperadminDbName());
break;
}
}
}
}
和 application.yaml 根據此文檔:
ebean:
dbSchema: public # use this schema rather than public
migration:
run: false # run database migrations on startup
search:
packages: om.bo.mypackage.db
querybean-packages: om.bo.mypackage.db.query
datasource:
db:
driver: org.postgresql.Driver
default: true
superadmin:
driver: org.postgresql.Driver
dbName: superadmin
default: false
只需更新 ebean 版本。 我有 ebean 12.1.10。 在 12.1.11 問題仍然存在,但在 12.1.12 和 12.1.13 版本中一切正常(從 12.2.1 開始,問題再次出現,但有不同的例外)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.