Close

JPA - @IdClass Examples

JPA JAVA EE 

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.IdClass;

@Entity
@IdClass(CustomerId.class)
public class Customer {
@Id
private String name;
@Id
private String phoneNumber;

private String address;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getPhoneNumber() {
return phoneNumber;
}

public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}

public String getAddress() {
return address;
}

public void setAddress(String address) {
this.address = address;
}

@Override
public String toString() {
return "Customer{" +
"name='" + name + '\'' +
", phoneNumber='" + phoneNumber + '\'' +
", address='" + address + '\'' +
'}';
}
}
import java.io.Serializable;

public class CustomerId implements Serializable {
private String name;
private String phoneNumber;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getPhoneNumber() {
return phoneNumber;
}

public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
}




import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.IdClass;
import java.util.Date;

@Entity
@IdClass(CompositeTaskId.class)
public class Task {
@Id
private int employeeId;
@Id
private int taskId;
private String taskName;
private Date date;

public Task() {
}

public Task(int employeeId, int taskId) {
this.employeeId = employeeId;
this.taskId = taskId;
}

public String getTaskName() {
return taskName;
}

public void setTaskName(String taskName) {
this.taskName = taskName;
}

public Date getDate() {
return date;
}

public void setDate(Date date) {
this.date = date;
}

@Override
public String toString() {
return "Task{" +
"employeeId=" + employeeId +
", taskId=" + taskId +
", taskName='" + taskName + '\'' +
", date=" + date +
'}';
}
}
import java.io.Serializable;
import java.util.Objects;

public class CompositeTaskId implements Serializable{
private int employeeId;
private int taskId;

public CompositeTaskId() {
}

public CompositeTaskId(int employeeId, int taskId) {
this.employeeId = employeeId;
this.taskId = taskId;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
CompositeTaskId taskId1 = (CompositeTaskId) o;
if (employeeId != taskId1.employeeId) return false;
return taskId == taskId1.taskId;
}

@Override
public int hashCode() {
return Objects.hash(employeeId, taskId);
}
}
Original Post




import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.IdClass;
import javax.persistence.OneToOne;
import java.util.Date;

@Entity
@IdClass(CompositeTaskId.class)
public class Task {
@Id
private long taskId;
@Id
@OneToOne
private Employee employee;
private String taskName;
private Date date;

public Task() {
}

public Task(Employee employee, long taskId) {
this.employee = employee;
this.taskId = taskId;
}

public String getTaskName() {
return taskName;
}

public void setTaskName(String taskName) {
this.taskName = taskName;
}

public Date getDate() {
return date;
}

public void setDate(Date date) {
this.date = date;
}

@Override
public String toString() {
return "Task{" +
"taskId=" + taskId +
", employee=" + employee +
", taskName='" + taskName + '\'' +
", date=" + date +
'}';
}
}
import java.io.Serializable;
import java.util.Objects;

public class CompositeTaskId implements Serializable {
//the names of the both fields should be same as the @Id fields in source class
//the type of 'taskId' field is same as of the basic @Id field defined in the Task entity
private long taskId;
//the type of 'employee' field is same as of the @Id field defined in Employee entity.
private long employee;

public CompositeTaskId() {
}

public CompositeTaskId(long employeeId, long taskId) {
this.employee = employeeId;
this.taskId = taskId;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
CompositeTaskId taskId1 = (CompositeTaskId) o;
if (employee != taskId1.employee) return false;
return taskId == taskId1.taskId;
}

@Override
public int hashCode() {
return Objects.hash(employee, taskId);
}
}
Original Post




import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.IdClass;
import javax.persistence.ManyToOne;
import java.util.Date;

@Entity
@IdClass(CompositeTaskId.class)
public class Task {
@Id
private long taskId;

@Id
@ManyToOne
private Employee employee;

private String taskName;
private Date date;

public Task() {
}

public Task(Employee employee, long taskId) {
this.employee = employee;
this.taskId = taskId;
}


public String getTaskName() {
return taskName;
}

public void setTaskName(String taskName) {
this.taskName = taskName;
}

public Date getDate() {
return date;
}

public void setDate(Date date) {
this.date = date;
}

@Override
public String toString() {
return "Task{" +
"taskId=" + taskId +
", employee=" + employee +
", taskName='" + taskName + '\'' +
", date=" + date +
'}';
}
}
import java.io.Serializable;
import java.util.Objects;

public class CompositeTaskId implements Serializable{
private long employee;
private long taskId;

public CompositeTaskId() {
}

public CompositeTaskId(long employeeId, long taskId) {
this.employee = employeeId;
this.taskId = taskId;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
CompositeTaskId taskId1 = (CompositeTaskId) o;
if (employee != taskId1.employee) return false;
return taskId == taskId1.taskId;
}

@Override
public int hashCode() {
return Objects.hash(employee, taskId);
}
}
Original Post

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.IdClass;

@Entity
@IdClass(EmployeeId.class)
public class Employee {
@Id
private String firstName;
@Id
private String lastName;
private String dept;

public Employee() {
}

public Employee(String firstName, String lastName, String dept) {
this.firstName = firstName;
this.lastName = lastName;
this.dept = dept;
}

@Override
public String toString() {
return "Employee{" +
"firstName='" + firstName + '\'' +
", lastName='" + lastName + '\'' +
", dept='" + dept + '\'' +
'}';
}
}
import java.io.Serializable;
import java.util.Objects;

public class EmployeeId implements Serializable{
private String firstName;
private String lastName;

public EmployeeId() {
}

public EmployeeId(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;

EmployeeId that = (EmployeeId) o;

if (!firstName.equals(that.firstName)) return false;
return lastName.equals(that.lastName);
}

@Override
public int hashCode() {
return Objects.hash(firstName, lastName);
}

@Override
public String toString() {
return "EmployeeId{" +
"firstName='" + firstName + '\'' +
", lastName='" + lastName + '\'' +
'}';
}
}
Original Post




import javax.persistence.*;
import java.util.Date;

@Entity
@IdClass(CompositeTaskId.class)
public class Task {
@Id
private long taskId;

@Id
@ManyToOne
@JoinColumns({
@JoinColumn(name = "FK_firstName", referencedColumnName = "firstName"),
@JoinColumn(name = "FK_lastName", referencedColumnName = "lastName")
})
private Employee employee;

private String taskName;
private Date date;

public Task() {
}

public Task(Employee employee, long taskId) {
this.employee = employee;
this.taskId = taskId;
}


public String getTaskName() {
return taskName;
}

public void setTaskName(String taskName) {
this.taskName = taskName;
}

public Date getDate() {
return date;
}

public void setDate(Date date) {
this.date = date;
}

@Override
public String toString() {
return "Task{" +
"taskId=" + taskId +
", employee=" + employee +
", taskName='" + taskName + '\'' +
", date=" + date +
'}';
}
}
import java.io.Serializable;
import java.util.Objects;

public class CompositeTaskId implements Serializable {
private EmployeeId employee;
private long taskId;

public CompositeTaskId() {
}

public CompositeTaskId(EmployeeId employee, long taskId) {
this.employee = employee;
this.taskId = taskId;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;

CompositeTaskId that = (CompositeTaskId) o;

if (taskId != that.taskId) return false;
return employee != null ? employee.equals(that.employee) : that.employee == null;
}

@Override
public int hashCode() {
return Objects.hash(employee, taskId);
}

@Override
public String toString() {
return "CompositeTaskId{" +
"employee=" + employee +
", taskId=" + taskId +
'}';
}
}
Original Post




See Also