我在使用JPA/Spring时遇到了一个特殊问题:

如何将模式动态分配给实体?

我们有属于架构AD的Table1和BD下的Table2.

@Entity
@Table(name = "TABLE1", schema="S1D")
...

@Entity
@Table(name = "TABLE2", schema="S2D")
...

模式可能不会硬编码在注释属性中,因为它取决于环境(Dev/Acc/Prd).(接受模式为S1A和S2A)

我怎样才能做到这一点呢?是否可以指定某种占位符,如下所示:

@Entity
@Table(name = "TABLE1", schema="${schema1}")
...

@Entity
@Table(name = "TABLE2", schema="${schema2}")
...

以便根据驻留在环境中的属性文件替换架构?

干杯

推荐答案

我遇到了同样的问题,我坚持不懈地解决了这个问题.xml,其中我指的是所需的orm.我声明了db shema中的xml文件

<persistence
xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0" >
<persistence-unit name="schemaOne">
    . . .
    <mapping-file>ormOne.xml</mapping-file>
    . . .
</persistence-unit>

<persistence-unit name="schemaTwo">
    . . .
    <mapping-file>ormTwo.xml</mapping-file>
    . . .
 </persistence-unit>
</persistence>

现在,您可以为您的特殊模式创建EntityManagerFactory

EntityManagerFactory emf = Persistence.createEntityManagerFactory("schemaOne");

Database相关问答推荐

在德尔菲中,不活动所有fdconnect、fdselect和fdtable

用于在 Excel 中的两个列表之间进行筛选的辅助列

用于存储人与聊天消息的数据库设计

使用python为组中的每个元素添加一个序列号

数据库设计:多表与单表

使用 ContentValues 和更新方法更新 sql 数据库

在一次 SQL 查询中更新多行的多列

如何在数据库中存储具有动态数量属性的数据

我可以为 dapper-dot-net 映射指定数据库列名称吗?

在 PostgreSQL 上获取数据库创建日期

SQL Server 简单插入语句超时

C# 数据连接最佳实践?

将 Android Room 数据库与 Firebase 实时数据库相关联

在 MySQL 存储过程中使用if和else

C++ SQL 数据库库比较

如何使用 Hibernate 在不丢失数据的情况下更新数据库模式?

将用户数据存储在 LDAP 而不是 RDBMS 中的原因

如何将特定的、可变的 order订单保存到数据库中

与 IntelliJ IDEA 相比,DataGrip 附加值

如何使用 PL/SQL Developer 连接到远程 Oracle DB?