好的問題是,我有一個應用程序,使查詢不同的數據庫,和一些實體有丟失的列。有沒有辦法忽略丟失的列而不使用繼承?休眠忽略列如果不存在
0
A
回答
6
有根據您的需求不同的可能性:
如果您再也不需要這些額外的列,其只存在於某些數據庫,那麼你根本不是在映射定義它們(或在註解)。然後它們永遠不會被Hibernate讀取,並且在插入時列將被設置爲null(如果您希望值不同於null,則可以在數據庫中定義默認值或觸發器)。
如果你需要額外的列時,你需要不同的映射不同的數據庫。對於這種情況,最好使用xml映射文件。無論如何,每個數據庫都有一個單獨的hibernate.cfg.xml文件(連接字符串在那裏)。在這裏爲不同列的表格指定不同的映射文件(標籤
<mapping resource="..." />
)。 Java pojo,我。即Java類對於所有數據庫都是相同的,並且它包含任何數據庫上存在的所有列,但是在數據庫特定映射文件中,只將這些列映射到該數據庫中真正存在的Java成員。 (有了註釋,這很煩人,因爲那麼你需要針對不同的數據庫使用不同的Java類,並且必須處理代碼中的邏輯。)如果表是隻讀的,那麼可以在該表上定義數據庫視圖讓這個視圖提供缺少的列與默認值。然後在Hibernate中映射視圖而不是表格。
相關問題
- 1. 休眠oneToMany被忽略
- 2. 忽略休眠@Where註解
- 3. 休眠:C3P0性能忽略
- 4. 休眠忽略LEFT JOIN
- 5. 休眠@ManyToOne(取= FetchType.LAZY)忽略
- 6. 休眠 - 保存子如果不存在
- 7. 休眠:referencedColumnName在JoinColumn被忽略
- 8. 休眠序列不存在
- 9. 忽略休眠在單元測試中READONLY緩存
- 10. JPA /休眠:忽略一直存在命名查詢
- 11. Spring Boot休眠5忽略@Table和@Column
- 12. 休眠搜索3.3-忽略IntraWord空白
- 13. 休眠忽略FetchType的單繼承
- 14. 多對多休眠反面忽略
- 15. 休眠GeneratedValue使用GenericGenerator被忽略
- 16. 休眠忽略我的方言
- 17. 休眠忽略類和映射
- 18. 被忽略的休眠過濾器
- 19. 休眠映射子類忽略父項
- 20. 如果不存在LEFT JOIN,則忽略
- 21. 忽略保存休眠實體的瞬態模式
- 22. 休眠:PSQLException:錯誤:列「column_name」不存在
- 23. 如何忽略在休眠中獲取子表
- 24. 休眠的saveOrUpdate忽略非空列屬性
- 25. 當生成序列時忽略休眠默認模式
- 26. 休眠 - 被忽略的唯一列約束
- 27. 休眠被忽略插入過程中列
- 28. 休眠表不存在
- 29. 休眠引用不存在
- 30. 休眠:表thingsdb.Things不存在
爲了改善您的問題,提供了您所嘗試的細節(一個* small *示例的映射/類/表),爲什麼它不起作用可能包括錯誤消息的示例。 – Gus 2013-03-07 20:20:56
我有同樣的問題。我通過創建一個註解爲MappedSuperclass的主類來解決該問題,該類包含所有可用的屬性。然後我創建了兩個入門課程。第一個被標記爲沒有自己的字段,第二個包含字段,只在一個可用的DB中。該解決方案使用繼承。但我希望它能幫助別人。 – Jens876 2015-04-09 09:30:21