Difference Between @JoinColumn and @PrimaryKeyJoinColumn in JPA (#14171)
* primarykeyjoincolum annotaion in jpa * indent Departmnet Person and primaryKeyJoinColumn * indent Department Perspn and PrimaryKeyJoinColumnIntegrationTest classes * format properly * format to 2-space continuation identation * Revert "format to 2-space continuation identation" This reverts commit 49630409ee296c07cfd494e46f9dbba75c9a49b0. * add 2-space indent on line continuations.
This commit is contained in:
parent
2546a2e218
commit
5f025f6dd1
|
@ -0,0 +1,32 @@
|
||||||
|
package com.baeldung.hibernate.primarykeyjoincolumn;
|
||||||
|
|
||||||
|
import jakarta.persistence.Entity;
|
||||||
|
import jakarta.persistence.Id;
|
||||||
|
import jakarta.persistence.Table;
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
@Table(name = "department")
|
||||||
|
public class Department {
|
||||||
|
|
||||||
|
@Id
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
public Long getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(Long id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,49 @@
|
||||||
|
package com.baeldung.hibernate.primarykeyjoincolumn;
|
||||||
|
|
||||||
|
import jakarta.persistence.Entity;
|
||||||
|
import jakarta.persistence.GeneratedValue;
|
||||||
|
import jakarta.persistence.GenerationType;
|
||||||
|
import jakarta.persistence.Id;
|
||||||
|
import jakarta.persistence.OneToOne;
|
||||||
|
import jakarta.persistence.PrimaryKeyJoinColumn;
|
||||||
|
import jakarta.persistence.Table;
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
@Table(name = "person")
|
||||||
|
public class Person {
|
||||||
|
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@OneToOne
|
||||||
|
@PrimaryKeyJoinColumn
|
||||||
|
private Department department;
|
||||||
|
|
||||||
|
public Long getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(Long id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Department getDepartment() {
|
||||||
|
return department;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDepartment(Department department) {
|
||||||
|
this.department = department;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,52 @@
|
||||||
|
package com.baeldung.hibernate.primarykeyjoincolumn;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertNotNull;
|
||||||
|
|
||||||
|
import org.junit.After;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import jakarta.persistence.EntityManager;
|
||||||
|
import jakarta.persistence.EntityManagerFactory;
|
||||||
|
import jakarta.persistence.Persistence;
|
||||||
|
|
||||||
|
public class PrimaryKeyJoinColumnIntegrationTest {
|
||||||
|
|
||||||
|
private static EntityManagerFactory emf;
|
||||||
|
|
||||||
|
private EntityManager em;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setup() {
|
||||||
|
emf = Persistence.createEntityManagerFactory("com.baeldung.movie_catalog");
|
||||||
|
em = emf.createEntityManager();
|
||||||
|
em.getTransaction()
|
||||||
|
.begin();
|
||||||
|
Department department = new Department();
|
||||||
|
department.setName("IT");
|
||||||
|
em.persist(department);
|
||||||
|
Person person = new Person();
|
||||||
|
person.setName("John Doe");
|
||||||
|
person.setDepartment(department);
|
||||||
|
em.persist(person);
|
||||||
|
em.getTransaction()
|
||||||
|
.commit();
|
||||||
|
}
|
||||||
|
|
||||||
|
@After
|
||||||
|
public void teardown() {
|
||||||
|
em.close();
|
||||||
|
emf.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenPersonEntity_getDepartment_shouldExist() {
|
||||||
|
Person person = em.find(Person.class, 1L);
|
||||||
|
assertNotNull(person);
|
||||||
|
assertEquals("John Doe", person.getName());
|
||||||
|
assertNotNull(person.getDepartment());
|
||||||
|
assertEquals("IT", person.getDepartment()
|
||||||
|
.getName());
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue