Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit ee4d5b3

Browse files
author
Rajeev Kumar Singh
committed
Hibernate Composite PK Demo
1 parent 78a0877 commit ee4d5b3

File tree

5 files changed

+177
-1
lines changed

5 files changed

+177
-1
lines changed
Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,29 @@
11
package com.example.hibernatecompositeprimarykeydemo;
22

3+
import com.example.hibernatecompositeprimarykeydemo.model.Employee;
4+
import com.example.hibernatecompositeprimarykeydemo.model.EmployeeIdentity;
5+
import com.example.hibernatecompositeprimarykeydemo.repository.EmployeeRepository;
6+
import org.springframework.beans.factory.annotation.Autowired;
7+
import org.springframework.boot.CommandLineRunner;
38
import org.springframework.boot.SpringApplication;
49
import org.springframework.boot.autoconfigure.SpringBootApplication;
510

611
@SpringBootApplication
7-
public class HibernateCompositePrimaryKeyDemoApplication {
12+
public class HibernateCompositePrimaryKeyDemoApplication implements CommandLineRunner {
13+
14+
@Autowired
15+
private EmployeeRepository employeeRepository;
816

917
public static void main(String[] args) {
1018
SpringApplication.run(HibernateCompositePrimaryKeyDemoApplication.class, args);
1119
}
20+
21+
@Override
22+
public void run(String... args) throws Exception {
23+
employeeRepository.deleteAllInBatch();
24+
25+
Employee employee = new Employee(new EmployeeIdentity("E-123", "D-457"), "Rajeev Kumar Singh", "rajeev@callicoder.com", "+91-9999999999");
26+
27+
employeeRepository.save(employee);
28+
}
1229
}
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
package com.example.hibernatecompositeprimarykeydemo.model;
2+
3+
import javax.persistence.EmbeddedId;
4+
import javax.persistence.Entity;
5+
import javax.persistence.Table;
6+
import javax.validation.constraints.NotNull;
7+
import javax.validation.constraints.Size;
8+
9+
/**
10+
* Created by rajeevkumarsingh on 22/11/17.
11+
*/
12+
@Entity
13+
@Table(name = "employees")
14+
public class Employee {
15+
16+
@EmbeddedId
17+
private EmployeeIdentity identity;
18+
19+
@NotNull
20+
private String name;
21+
22+
@NotNull
23+
@Size(max = 100)
24+
private String email;
25+
26+
@Size(max = 15)
27+
private String phoneNumber;
28+
29+
public Employee() {
30+
31+
}
32+
33+
public Employee(EmployeeIdentity identity, String name, String email, String phoneNumber) {
34+
this.identity = identity;
35+
this.name = name;
36+
this.email = email;
37+
this.phoneNumber = phoneNumber;
38+
}
39+
40+
public EmployeeIdentity getIdentity() {
41+
return identity;
42+
}
43+
44+
public void setIdentity(EmployeeIdentity identity) {
45+
this.identity = identity;
46+
}
47+
48+
public String getName() {
49+
return name;
50+
}
51+
52+
public void setName(String name) {
53+
this.name = name;
54+
}
55+
56+
public String getEmail() {
57+
return email;
58+
}
59+
60+
public void setEmail(String email) {
61+
this.email = email;
62+
}
63+
64+
public String getPhoneNumber() {
65+
return phoneNumber;
66+
}
67+
68+
public void setPhoneNumber(String phoneNumber) {
69+
this.phoneNumber = phoneNumber;
70+
}
71+
}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package com.example.hibernatecompositeprimarykeydemo.model;
2+
3+
import javax.persistence.Embeddable;
4+
import javax.validation.constraints.NotNull;
5+
import java.io.Serializable;
6+
7+
/**
8+
* Created by rajeevkumarsingh on 22/11/17.
9+
*/
10+
@Embeddable
11+
public class EmployeeIdentity implements Serializable {
12+
@NotNull
13+
private String employeeCode;
14+
15+
@NotNull
16+
private String companyCode;
17+
18+
public EmployeeIdentity() {
19+
20+
}
21+
22+
public EmployeeIdentity(String employeeCode, String companyCode) {
23+
this.employeeCode = employeeCode;
24+
this.companyCode = companyCode;
25+
}
26+
27+
public String getEmployeeCode() {
28+
return employeeCode;
29+
}
30+
31+
public void setEmployeeCode(String employeeCode) {
32+
this.employeeCode = employeeCode;
33+
}
34+
35+
public String getCompanyCode() {
36+
return companyCode;
37+
}
38+
39+
public void setCompanyCode(String companyCode) {
40+
this.companyCode = companyCode;
41+
}
42+
43+
@Override
44+
public boolean equals(Object o) {
45+
if (this == o) return true;
46+
if (o == null || getClass() != o.getClass()) return false;
47+
48+
EmployeeIdentity that = (EmployeeIdentity) o;
49+
50+
if (!employeeCode.equals(that.employeeCode)) return false;
51+
return companyCode.equals(that.companyCode);
52+
}
53+
54+
@Override
55+
public int hashCode() {
56+
int result = employeeCode.hashCode();
57+
result = 31 * result + companyCode.hashCode();
58+
return result;
59+
}
60+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.example.hibernatecompositeprimarykeydemo.repository;
2+
3+
import com.example.hibernatecompositeprimarykeydemo.model.Employee;
4+
import com.example.hibernatecompositeprimarykeydemo.model.EmployeeIdentity;
5+
import org.springframework.data.jpa.repository.JpaRepository;
6+
import org.springframework.stereotype.Repository;
7+
8+
/**
9+
* Created by rajeevkumarsingh on 22/11/17.
10+
*/
11+
@Repository
12+
public interface EmployeeRepository extends JpaRepository<Employee, EmployeeIdentity> {
13+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties)
2+
spring.datasource.url=jdbc:mysql://localhost:3306/hibernate_composite_pk_demo?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false
3+
spring.datasource.username=root
4+
spring.datasource.password=root
5+
6+
# Hibernate
7+
8+
# The SQL dialect makes Hibernate generate better SQL for the chosen database
9+
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
10+
11+
# Hibernate ddl auto (create, create-drop, validate, update)
12+
spring.jpa.hibernate.ddl-auto = update
13+
14+
logging.level.org.hibernate.SQL=DEBUG
15+
logging.level.org.hibernate.type=TRACE

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /