使用查询 DSL 时可以在 table 旁边定义数据库名称吗?

Can define the database name beside the table when using query DSL?

我们能否在实体名称旁边定义数据库,而不是每次在多租户应用程序中获取数据时都切换到特定模式?

例如:-

QEntity qEntity = QEntity.entity;
JPAQueryFactory queryFactory = new JPAQueryFactory(em);
queryFactory.from(database_name+qEntity).select(qEntity.id,....)

创建 QueryFactory 时,通常会通过不同的 EntityManager 提供不同的数据库。要通过不同的模式实施多租户,您可以查看 https://www.baeldung.com/hibernate-5-multitenancy 中描述的替代方案。

无法查询 JPQL 本身或 HQL 中的特定数据库或模式 - 或查询任何未映射为实体的 table - 因此使用 Querydsl 生成 JPQL 或 HQL因为你有同样的限制。