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; //... }
Invest now in Acorns!!! 🚀
Join Acorns and get your $5 bonus!
Acorns is a micro-investing app that automatically invests your "spare change" from daily purchases into diversified, expert-built portfolios of ETFs. It is designed for beginners, allowing you to start investing with as little as $5. The service automates saving and investing. Disclosure: I may receive a referral bonus.
Invest now!!! Get Free equity stock (US, UK only)!
Use Robinhood app to invest in stocks. It is safe and secure. Use the Referral link to claim your free stock when you sign up!.
The Robinhood app makes it easy to trade stocks, crypto and more.
Webull! Receive free stock by signing up using the link: Webull signup.
More Related questions...
