How we implement composite key in table using annotation and xml configuration.
Primary key -- This is use for the table column
To make sure that rows will unique.
Composite key -- When we have more then two column as primary key in the table known
as composite key .
We will consider an example with a table RolesMenu . Which is table for describing the role of the employee . In this table we two column which has primary key . Role_ID and
MenuItem_ID . Now we will discuss how to
Write code for the composite key for these two columns.
CREATE TABLE " RolesMenu "
(
"Role_ID" VARCHAR2(255 CHAR),
" MenuItem_ID " VARCHAR2(255 CHAR),
" EMP_NAME " VARCHAR2(255 CHAR), PRIMARY KEY(Role_ID, MenuItem_ID)
);
First we will consider the xml based configuration . So we have RoleMenu
Class where we written all columns and getter setter for these column . The
RoleMenu.hbm.xml file for the pojo class as bleow.
RoleMenu.hbm.xml
Place the RoleMenu.hbm.xml file under the src/main/resources folder
<hibernate-mapping package="com.bhirkutisoft">
<class name=" RolesMenuItems " table=" RolesMenuItems ">
<composite-id>
<key-property column="Role_ID" name="RoleId">
<key-property column=" menuItem_ID " name=" menuItemID ">
</key-property></key-property></composite-id>
<property column="EMP_NAME" name="empName">
</property></class>
</hibernate-mapping>
Here the primary key columns are enclosed in the <composite-id>
--------- ----
</composite-id>
Now we can see how we can code for it for annotation based configuration . @Embeddable and @EmbeddedId two annotation
We use for composite key column class .
@Embeddable
public class RolesMenu {
@Column(name = "Role_ID")
private String roleID;
@Column(name = "MenuItem_ID")
private String menuItemID;
//getter, setter methods
}
@Entity
@Table(name = "RolesMenuItems")
public class RolesMenuItems {
@EmbeddedId
private RolesMenu roleMenu;
@Column(name = " EMP_NAME ")
private String empName;
/*setter getter methods */
}
This can be understood more easily by another example of the table Employee .
Employee
company_id VARCHAR(25)
employee_id VARCHAR(25)
email VARCHAR(30)
name VARCHAR(50)
Phone_number VARCHAR(50)
package com.example.jpa.model;
import javax.persistence.Embeddable;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
@Embeddable
public class EmployeeIdentity implements Serializable {
@NotNull
@Size(max = 20)
private String employeeId;
@NotNull
@Size(max = 20)
private String companyId;
public EmployeeIdentity() {
}
public EmployeeIdentity(String employeeId, String companyId) {
this.employeeId = employeeId;
this.companyId = companyId;
}
public String getEmployeeId() {
return employeeId;
}
public void setEmployeeId(String employeeId) {
this.employeeId = employeeId;
}
public String getCompanyId() {
return companyId;
}
public void setCompanyId(String companyId) {
this.companyId = companyId;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
EmployeeIdentity that = (EmployeeIdentity) o;
if (!employeeId.equals(that.employeeId)) return false;
return companyId.equals(that.companyId);
}
@Override
public int hashCode() {
int result = employeeId.hashCode();
result = 31 * result + companyId.hashCode();
return result;
}
}
2. Employee - Domain model
package com.example.jpa.model;
import org.hibernate.annotations.NaturalId;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Email;
import javax.validation.constraints.Size;
@Entity
@Table(name = "employees")
public class Employee {
@EmbeddedId
private EmployeeIdentity employeeIdentity;
@NotNull
@Size(max = 60)
private String name;
@NaturalId
@NotNull
@Size(max = 60)
private String email;
@Size(max = 15)
@Column(name = "phone_number", unique = true)
private String phoneNumber;
public Employee() {
}
public Employee(EmployeeIdentity employeeIdentity, String name, String email, String phoneNumber) {
this.employeeIdentity = employeeIdentity;
this.name = name;
this.email = email;
this.phoneNumber = phoneNumber;
}
// Getters and Setters (Omitted for brevity)
}

1FE0D777EE
ReplyDeleteInstagram Ücretsiz Beğeni
Tiktok Ücretsiz Takipçi
Twitter BeÄŸeni Hilesi
Facebook Ücretsiz Beğeni
SoundCloud Takipçi Hilesi
Tumblr Ücretsiz Takipçi
Twitch Ücretsiz Takipçi
Reels BeÄŸeni Hilesi
PUBG Mobile Uc Hilesi
ReplyDeleteBugün en sevdiğim oyunları keşfetmek için çeşitli siteleri inceledim. Özellikle oyun.indir.biz.tr adresi oldukça kullanışlı ve güvenilir. Oradan yeni çıkan oyunları indirip arkadaşlarımla keyifli vakitler geçiriyorum. Bu site sayesinde oyunlarım güncel ve sorunsuz bir şekilde elime ulaşıyor.