2015-07-10 49 views
1

我有一個數據庫表有三個字段:其中兩個是表的組合鍵,另一個是自動生成的字段不是表的ID。將此表映射到JPA實體時,是否可以將自動生成的字段映射爲@Id,即使它不是?如果是,那會有什麼影響?注意:我無法更改數據庫。當數據庫中的id不是數據庫時,可以映射字段@Id嗎?

+2

我不確定你是否可以,但我相信你不應該。你的映射必須反映你的數據庫。 – AndreDuarte

回答

0

你不應該 - @Id有特殊的含義,並且會被hibernate用作主鍵。

@GeneratedValue註釋僅在@Id也存在的情況下有效,所以您不能在非ID字段中使用該註釋。更多詳情here - 根據你正在使用的數據庫有可能的選擇。

1

是的,你可以。實際上,當Hibernate實體映射到在多個實際表(和其他視圖)上定義的數據庫視圖時通常是這種情況。

如果您不打算通過Hibernate創建該實體的新實例,那麼就沒有任何影響(如果該鍵真的是唯一的話)。

如果您將使用Hibernate持久化新實例,那麼一定要選擇適當的標識符生成策略。