在postgresql
,使用表註釋的模式屬性,這可以通過加入表繼承來完成:
@Entity
@Table(schema = "`DB2`", name="BASE_EMPLOYEES")
@Inheritance(strategy = InheritanceType.JOINED)
public class BaseEmployee {
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
protected Long id;
private String name;
private String address;
private String department;
...
}
@Entity
@Table(schema = "`DB1`", name = "FULL_EMPLOYEES")
public class FullEmployee extends BaseEmployee {
private Integer age;
private String qualification;
private String experience;
...
}
我已經在postgresql
數據庫進行了測試,這種配置工作正常,沒有需要定義多個實體管理器工廠和數據源。
注意:在其他數據庫中,您可能不需要模式名稱周圍的引號。
萬一數據庫支持同義詞或等同概念:
在例如甲骨文的情況下,最方便的解決方案是在數據庫的水平,通過使在一個模式可見的表另一個模式通過public synonyms。
如果每個環境不同的架構名稱:
在這種情況下,設置在不同的orm.xml中文件的架構名稱,並配置您的構建過程中只放這些文件中的一個視類路徑環境,看到這answer。
請您詳細說明要求。我不太明白你想要達到或預防的是什麼。你有沒有映射到任何一個表的實體?有不同表格的目的是什麼?它需要成爲一個單一的實體嗎?和其他相關信息,你可以提供。 – kostja
在這種情況下,您將需要2個會話功能。 –
我在兩個數據庫中有相同的一組表。但是這個特定的表格有不同的列,因爲有一些法律上的限制。那麼如何讓相同的.hbm,pojo類在兩種不同類型的表中使用相同的代碼進行更新。而不是2會議工廠將解決問題。由於我的問題不是連接到2 dbs。但處理CRUD操作。 – kumar