package org.hibernate.examples.mapping.inheritance.joinedsubclass;
import lombok.extern.slf4j.Slf4j;
import org.hibernate.examples.AbstractJpaTest;
import org.junit.Test;
import org.springframework.transaction.annotation.Transactional;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import static org.assertj.core.api.Assertions.assertThat;
/**
* org.hibernate.examples.mapping.inheritance.joinedsubclass.JoinedSubclassTest
*
* @author 배성혁 sunghyouk.bae@gmail.com
* @since 2013. 11. 30. 오후 12:53
*/
@Slf4j
@Transactional
public class JoinedSubclassTest extends AbstractJpaTest {
@PersistenceContext
EntityManager em;
@Test
public void joinedSubclas() throws Exception {
Company company = new Company();
company.setName("HealthConnect");
Employee employee = new Employee();
employee.setName("배성혁");
employee.setRegidentNo("111111-11111111");
employee.setEmpNo("21011");
employee.setCompany(company);
Customer customer = new Customer();
customer.setName("customer1");
customer.setRegidentNo("222222-22222222");
customer.setContactEmployee(employee);
em.persist(company);
em.persist(employee);
em.persist(customer);
em.flush();
em.clear();
Customer customer1 = em.find(Customer.class, customer.getId());
assertThat(customer1).isEqualTo(customer);
assertThat(customer1.getContactEmployee()).isEqualTo(employee);
assertThat(customer1.getContactEmployee().getCompany()).isEqualTo(company);
Employee employee1 = em.find(Employee.class, employee.getId());
assertThat(employee1).isEqualTo(employee);
assertThat(employee1.getCompany()).isEqualTo(company);
}
}