標籤:style blog http ar io color os sp for
Hibernate Annotations
Mapping composite primary keys and foreign keys to composite primary keys:
http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/#d0e2177
引用Composite primary keys use a embedded class as the primary key representation, so you‘d use the @Id and @Embeddable annotations. Alternatively, you can use the @EmbeddedId annotation. Note that the dependent class has to be serializable and implements equals()/hashCode(). You can also use @IdClass.
@Entitypublic class RegionalArticle implements Serializable { @Id public RegionalArticlePk getPk() { ... }}@Embeddablepublic class RegionalArticlePk implements Serializable { ... }
or alternatively
@Entitypublic class RegionalArticle implements Serializable { @EmbeddedId public RegionalArticlePk getPk() { ... }}public class RegionalArticlePk implements Serializable { ... }
hibernate的annotation的文檔中提供了三種方法
1 將組件類註解為@Embeddable,並將組件的屬性註解為@Id
2 將組件的屬性註解為@EmbeddedId (方便)
3 將類註解為@IdClass,並將該實體中所有屬於主鍵的屬性都註解為@Id(符合編程習慣)
主鍵類需要序列化(考慮到可能會將資料讀寫到虛擬記憶體中),需要重寫hashcode()和equals()方法,因為要對聯合主鍵進行比較.
Hibernate Annotation 聯合主鍵三種寫法的例子:
http://laodaobazi.iteye.com/blog/903236
Which anotation should I use: @IdClass or @EmbeddedId:
http://stackoverflow.com/questions/212350/which-anotation-should-i-use-idclass-or-embeddedid
Compound Primary Keys with Hibernate and JPA Annotations:
http://jpa.ezhibernate.com/Javacode/learn.jsp?tutorial=15usingcompoundprimarykeys
@IdClass and @EmbeddedId:
http://www.coderanch.com/t/452567/ORM/java/IdClass-EmbeddedId
Hibernate @IdClass @EmbeddedID相關註解