2007-09-22

Tags: 程式語言

在Hiberante裡面的OR-Mapping設定中,如果有遇到「外鍵參考到複合主鍵(foreign keys refer to composite primary keys)」的設置時,要注意下列的事項


  1. Hibernate許可外鍵跟參考到的複合主鍵不一定要同樣欄位名稱(database column name),不管有沒有相同名稱都可在Hibrenate上面被成功的設定

  2. 如果是經由XML設定OR-Mapping,必需注意多個外鍵的排列順序必需跟複合主鍵的排列順序一樣,不然設定會失效,外鍵會對應不到複合主鍵

  3. 如果是經由Annotation設定OR-Mapping,在預設狀況下,設定值中的外鍵排列順序必需跟複合主鍵的排列順序一樣;如果是用了"referencedColumnName"屬性來強制指定參考到的主鍵欄位名稱的話,外鍵排列順序就可以跟複合主鍵的排列順序不同



有關這方面的Issue在「Java Persistence with Hibernate」一書中有詳細的解說,有需要的話可以參考書中下列章節

  • Foreign keys to composite primary keys (Page 329)

  • Composite keys with annotations (Page 333)

  • Composite foreign key referencing nonprimary keys (Page 335)