gpt4 book ai didi

java - 如何在ebean中使用多个数据库

转载 作者:行者123 更新时间:2023-12-02 12:56:10 28 4
gpt4 key购买 nike

我正在尝试对不同的postgres数据库使用Ebean框架ORM查询。
根据thesethese文档,对我的单个数据库的查询工作正常。但是要解决另一个问题,我必须通过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的配置都相同,例如 here:
    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根据此 doc:
    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开始,问题似乎再次出现,但异常不同)

    关于java - 如何在ebean中使用多个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62569796/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com