我有一個數據庫表有三個字段:其中兩個是表的組合鍵,另一個是自動生成的字段不是表的ID。將此表映射到JPA實體時,是否可以將自動生成的字段映射爲@Id,即使它不是?如果是,那會有什麼影響?注意:我無法更改數據庫。當數據庫中的id不是數據庫時,可以映射字段@Id嗎?
1
A
回答
0
你不應該 - @Id有特殊的含義,並且會被hibernate用作主鍵。
@GeneratedValue註釋僅在@Id也存在的情況下有效,所以您不能在非ID字段中使用該註釋。更多詳情here - 根據你正在使用的數據庫有可能的選擇。
1
是的,你可以。實際上,當Hibernate實體映射到在多個實際表(和其他視圖)上定義的數據庫視圖時通常是這種情況。
如果您不打算通過Hibernate創建該實體的新實例,那麼就沒有任何影響(如果該鍵真的是唯一的話)。
如果您將使用Hibernate持久化新實例,那麼一定要選擇適當的標識符生成策略。
相關問題
- 1. 數據庫驅動的字段(域ID)
- 2. 查找數據庫DDL映射字段
- 3. 我們可以在Entity Framework中映射數據庫視圖嗎?
- 4. 中繼是否需要數據庫中的id字段?
- 5. 我應該在ViewState中存儲數據庫ID字段嗎?
- 6. 當id是字母時選擇數據 - 不是數字
- 7. Nhibernate可以自動從數據庫生成映射文件嗎?
- 8. 在編輯過程中,數據庫中的實體ID映射不正確
- 9. 映射線程ID入庫
- 10. Hibernate/JPA Parent-Child - Parent equals()/ hashCode()可以使用數據庫ID嗎?
- 11. 將Facebook好友ID映射到實時數據庫中的Firebase uid
- 12. 當id不在數據庫中時Session.load返回InvocationException
- 13. MYSQL數據庫ID的
- 14. NHibernate遺留數據庫映射不可能嗎?
- 15. 數據庫/對象映射
- 16. XML映射到數據庫
- 17. 數據庫映射方法
- 18. 休眠數據庫映射
- 19. 映射生產數據庫
- 20. Java數據庫與映射?
- 21. MVC ModelState錯誤「ID字段是必需的」,儘管數據庫生成ID
- 22. Hibernate生成新的Id而不是從數據庫獲取Id?
- 23. 防止數據庫中的重複數據庫,而不是ID列
- 24. 數據庫ID是互換的android sqlite
- 25. log4net將自定義數據映射到數據庫中的字段
- 26. 在數據庫字段中存儲一個ID的哈希值?
- 27. atk4數據庫表ID
- 28. MySQL數據庫,主題ID
- 29. 指定android數據庫ID
- 30. 從數據庫打印ID
我不確定你是否可以,但我相信你不應該。你的映射必須反映你的數據庫。 – AndreDuarte