How to create a Composite Key in Hibernate
Points To Remember
- You need to create an Embedded Object to create a composite key in Hibernate.
- You can create use an Embeddable Object as an EmbeddedId in class to make it a composite key.
Create a Composite Key in Hibernate
Suppose we have three classes User, Role and UserRole. In class UserRole we want to have a composite id that will include userId and roleId. Then we will first create an embedded object and then using this we will create a composite key.Let us first create an Embeddable object and
User.java
package com.ekiras.domain; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy=GenerationType.AUTO) @Column(name="id") private Long id; @Column(name="email") private String email; @Column(name="password") private String password; // GETTERS and SETTERS }
Role.java
package com.ekiras.domain; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name="role") public class Role { @Id @GeneratedValue(strategy=GenerationType.AUTO) @Column(name="id") private Long id; @Column(name="authority") private String authority; // GETTERS and SETTERS }
UserRoleEmbed.java
package com.ekiras.embeddeble; import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Embeddable; @Embeddable public class UserRoleEmbed implements Serializable { private static final long serialVersionUID = 1L; @Column(name="user_id") private Long userId; @Column(name="role_id") private Long roleId; // GETTERS and SETTERS }
UserRole.java
package com.ekiras.domain; import javax.persistence.EmbeddedId; import javax.persistence.Entity; import javax.persistence.Table; import com.ekiras.ekjam.embeddeble.UserRoleEmbed; @Entity @Table(name="user_role") public class UserRole { @EmbeddedId private UserRoleEmbed userRole; // GETTERS and SETTERS }
The above image shows the database schema that the above code snippets created.
No comments: