2012-06-28 29 views
3

我有一個沒有主鍵的表,也有一個不能創建。我可以使用此表的三列構造一個唯一的密鑰。現在hibernate要求每個註釋類都有一個id,我如何用我可以創建的唯一Id來滿足這個id。Hibernate註解沒有主鍵的表的標識

回答

1

如果它是一個entity type那麼你應該使用複合鍵。這可以通過將主鍵字段移動到單獨的類並使用@Id註釋映射到實體類中來完成。

Mapping composite primary keys and foreign keys to composite primary keys

如果它不是一個實體,而是一個值類型,你應該相應地映射。 請參閱https://stackoverflow.com/a/1696146/324900Entity and value types in hibernate

+0

我可以定義一個複合主鍵嗎? –

+0

是的,你可以。但是你說你沒有主鍵,那麼這張表就不是一個理論上的「實體」。這應該是另一個實體的一部分,您可以將多個表映射到Hibernate中的單個實體。 – Reddy

+1

Hibernate(通常不是JPA)不關心你是否物理地在表上定義了主鍵。您只需要一列或一組列來唯一標識每一行。列必須都是不可空的。 –