2009-05-21 47 views

回答

10

不要以爲Hibernate允許在沒有主鍵的情況下映射表......想想Hibernate如何在沒有可以唯一標識一行的列的情況下執行更新。

我想一個解決方法是使用一個組合鍵與所有列,但你最好添加一個主鍵。

+0

我認爲你在這裏是正確的。此外,所有列的組合鍵仍然需要是主鍵,所以您最好製作一個更合理的組合鍵或選擇一個唯一標識的列作爲主鍵。 – 2009-05-21 19:30:25

+7

我不知道在只讀情況下它是否太重要(wrt udpates)。 – javamonkey79 2010-11-12 00:04:56

5

我只會在你讀數據的時候這麼做(不是寫它)。當你有一個像甲骨文數據庫,你可以有之類的語句

select DOKUMENT.*, ROWID from DOKUMENT 

→,因此,你可以添加此語句到Hibernate映射:

<id column="ROWID" type="string" /> 

隨後,您定義的所有其他列作爲

<property... 

當您使用逆向工程嚮導,您可以

  1. 除去複合密鑰標記
  2. 搜索和替換鍵屬性屬性和
  3. 插入件上面的行