package org.hibernate.examples.mapping.associations.join; import lombok.extern.slf4j.Slf4j; import org.hibernate.examples.AbstractJpaTest; import org.hibernate.examples.mapping.associations.join.repository.JoinCustomerRepository; import org.hibernate.examples.mapping.associations.join.repository.JoinUserRepository; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; 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.associations.join.JoinTest * * @author 배성혁 sunghyouk.bae@gmail.com * @since 2013. 11. 28. 오후 11:20 */ @Slf4j @Transactional public class JoinTest extends AbstractJpaTest { @PersistenceContext EntityManager em; @Autowired JoinUserRepository userRepository; @Autowired JoinCustomerRepository customerRepository; @Test public void configuration() throws Exception { assertThat(userRepository).isNotNull(); } @Test public void joinUserTest() throws Exception { JoinUser user = new JoinUser(); user.getNicknames().add("debop"); user.getNicknames().add("sunghyouk"); JoinAddressEntity home = new JoinAddressEntity(); home.setCity("Seoul"); home.setStreet("Jungreung"); home.setZipcode("100-100"); user.getAddresses().put("home", home); JoinAddressEntity office = new JoinAddressEntity(); office.setCity("Seoul"); office.setStreet("Ankook"); office.setZipcode("200-200"); user.getAddresses().put("office", office); userRepository.saveAndFlush(user); em.clear(); JoinUser loaded = userRepository.findOne(user.getId()); assertThat(loaded).isNotNull(); assertThat(loaded.getAddresses()).isNotNull(); assertThat(loaded.getAddresses().size()).isEqualTo(2); assertThat(loaded.getNicknames().size()).isEqualTo(2); } @Test public void joinCustomerTest() throws Exception { JoinCustomer customer = new JoinCustomer(); customer.setName("배성혁"); customer.setEmail("sunghyouk.bae@gmail.com"); JoinAddress addr = new JoinAddress(); addr.setCity("Seoul"); addr.setStreet("Jungreung"); addr.setZipcode("100-100"); // Embedded Class customer.setJoinAddress(addr); customerRepository.saveAndFlush(customer); em.clear(); JoinCustomer loaded = customerRepository.findByName(customer.getName()); assertThat(loaded).isNotNull(); assertThat(loaded.getJoinAddress()).isNotNull(); assertThat(loaded.getJoinAddress().getCity()).isEqualTo(addr.getCity()); } }