想知道Hibernate是否支持實體中靜態屬性和動態屬性的組合。例如Hibernate是否在運行時支持混合實體模式?
public class User
{
private Long id;
private String first_name;
private String last_name;
private Map<String,Object> dynamicProperties;
}
我可以通過在運行時從Db讀取用戶表的元數據來獲取動態屬性。 基本上我正在研究支持多個客戶端的產品。
對於一個客戶端的用戶表可以有像列id
,first_name
,last_name
只而對於其他客戶端用戶表需要存儲像DOB
和Title
兩個相加列。
考慮到id
,first_name
和last_name
作爲所有客戶端之間的常見屬性集,我將這些屬性用作靜態屬性和休息我計劃將其作爲實體中的映射進行存儲。不知道死於休眠支持這一點。
約束是代碼僅在運行時才知道動態屬性列。
這是你的問題的一部分,我不明白「約束是代碼只知道在運行時動態屬性列」,對我來說,這似乎是一個瞬態屬性不明白爲什麼你需要這個約束 –
謝謝鄧肯。讓我進一步解釋我的問題。我正在研究支持多個組織作爲客戶的產品。一個組織的員工定義可以有3個字段,如id,firstName,lastName,而對於其他組織,可以有5個字段,如id,firstName,lastName,出生日期,稱呼等。爲了支持這些變體,我使用Employee的通用屬性作爲存儲在名爲dynamicProperties的映射中的Object和客戶端特定屬性的屬性。所以基本上每當一個新的客戶端進入代碼將從數據庫中讀取元數據。 – user1914503
更多關於「來自db的元數據」的更多信息,您對所有客戶端都堅持一種架構嗎?那麼像CustomProperty這樣的對象具有一個id和一個字符串值以及一個可以在運行時輸出的數據類型的常量。那麼我想你可以爲這個元數據編寫一個自定義的查詢方法。但是每個客戶都有相同的模式權限? –