可以說,我有一個類Employee
與字段employeeId
和name
。這由另一個類PermanentEmployee
繼承,字段爲salary
和experience
。我用@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
。
從這我明白,它會創建兩個表。一個用於父類,具有兩列employeeId
和name
。另一張有四列兒童班的表格。那就是name
,employeeid
,salary
和experience
。
當我嘗試用所有四個值來堅持子對象(永久員工)時,它將插入到子表中。 只在子表。它沒有插入到父表中。
[1]這是默認行爲嗎?或者我錯過了什麼?我是否需要像@OneToOne
映射這樣的實體關係?
[附註]我也試過@Inheritance(strategy = InheritanceType.JOINED)
。這次爲每個子類使用Table,它爲它們創建兩個表和外鍵關係。並將其插入表中。每個具體類的休眠表表格行爲
0
A
回答
0
是的,如果您使用的是@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
,則該實體將被保存到一個表中,該表代表持久實體的類。這對性能可能很好,因爲在獲取實體實例的同時,您不必創建表連接。但是它也有缺點,例如表格沒有被標準化,修改層次結構中的父項會導致所有子表格中的變化。在大多數情況下,這個策略並不推薦,儘管它是最簡單的。
至於OneToOne
,如果你的意思是,你必須提供父類和它的子類之間的關係,那麼沒有。它用於在兩個或更多實例之間建立關係,而不是用於類層次結構。
相關問題
- 1. 休眠表每個子類映射
- 2. 休眠雙向OneToMany與JoinTable和多態類與表每個具體類
- 3. 將數據庫錶轉換爲實體Java類以進行休眠的工具
- 4. 具有重複列名的休眠表每子類
- 5. 休眠表每類和設置映射
- 6. 休眠一個實體多個表每個國家
- 7. 休眠 - 一個表與多個實體?
- 8. 休眠 - 一個表多個實體
- 9. 每類休眠NamingStrategy
- 10. 休眠HQL使用兩個實體表
- 11. 表的休眠
- 12. 休眠查詢兩個表格
- 13. 自動爲表創建休眠域類
- 14. 休眠實體類映射到兩個不同的表
- 15. 切換每個表格行,直到達到具有X類別的表格行
- 16. 休眠時每個子類和每個層次結構的混合表
- 17. 休眠@Embeddable行爲二次表
- 18. 沒有基礎表的休眠實體
- 19. 如何表示在休眠類型表
- 20. 休眠鎖表
- 21. 表在休眠
- 22. 休眠列表
- 23. 休眠列表
- 24. Enttiy Framework中每個Hierarchy和Table每個具體類型的表?
- 25. 休眠,加入3個表
- 26. 休眠查詢四個表
- 27. 具有BigDecimal且不長的實體類 - 生成休眠工具
- 28. 休眠中的多對多表格
- 29. 同時具有休眠和手動插入的表格
- 30. Hibernate - 每個具體類策略的表 - 每個表的單獨ID
然後,我應該做什麼,如果我需要的數據要堅持父母和孩子這個'每班級表'。任何工作? – Ram
你必須使用不同的策略,然後jpa會爲你創建規範化表格並加入選擇。如果僅使用hibernate,您將看不到任何區別,但如果您有一些帶有選擇的本機代碼,則必須重新制作查詢以使用連接 – Stanislav