Hibernate / Hibernate interview questions II
How do I map a composite key in Hibernate?
The EmbeddedId and IdClass annotations are used to denote composite primary keys.
The following are some of the rules that is applied for composite primary keys.
- The primary key class must be public and must have a public no-arg constructor.
- The primary key class must be serializable.
- The primary key class must define equals and hashCode methods.
Using EmbeddedId.
@Embeddable public class EntityKey implements Serializable { protected Integer compositeKey1; protected Integer compositeKey2; public EntityKey() {} public EntityKey(Integer key1, Integer key2) { this.compositeKey1 = key1; this.compositeKey2 = key2; } // equals, hashCode } @Entity public class HibernateEntity implements Serializable { @EmbeddedId private EntityKey primaryKey; private String description; //... }
Using IdClass.
public class EntityKey implements Serializable { protected Integer compositeKey1; protected Integer compositeKey2; public EntityKey() {} public EntityKey(Integer key1, Integer key2) { this.compositeKey1 = key1; this.compositeKey2 = key2; } // equals, hashCode } @Entity @IdClass(EntityKey.class) public class HibernateEntity implements Serializable { @Id private Integer compositeKey1; @Id private Integer compositeKey2; private String description; //... }
More Related questions...