/* * (c) Copyright 2005-2012 JAXIO, www.jaxio.com * Source code generated by Celerio, a Jaxio product * Want to use Celerio within your company? email us at info@jaxio.com * Follow us on twitter: @springfuse * Template pack-backend-sd:src/test/java/repository/RepositoryWithRealSessionTest.e.vm.java */ package com.company.demo.repository; import static org.fest.assertions.Assertions.assertThat; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import org.apache.log4j.Logger; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.transaction.annotation.Transactional; import com.google.common.collect.Sets; import com.company.demo.domain.Address; import com.company.demo.repository.AddressGenerator; import com.company.demo.repository.AddressRepository; /** * Integration test on {@link AddressRepository} */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "classpath*:spring/applicationContext-test.xml" }) @Transactional public class AddressRepositoryWithRealSessionTest { @SuppressWarnings("unused") private static final Logger log = Logger.getLogger(AddressRepositoryWithRealSessionTest.class); @PersistenceContext private EntityManager entityManager; @Autowired private AddressRepository addressRepository; @Autowired private AddressGenerator addressGenerator; @Test public void identityShouldBePreserved() { Address address = addressGenerator.getAddress(); // add it to a Set before saving (force equals/hashcode) Sets.newHashSet(address); addressRepository.save(address); entityManager.flush(); // reload it from cache and check equality Integer id = address.getId(); assertThat(address).isEqualTo(addressRepository.findOne(id)); // clear cache to force reload from db entityManager.clear(); // pk are equals... assertThat(address.getId()).isEqualTo(addressRepository.findOne(id).getId()); // but since you do not use a business key, equality is lost. assertThat(address).isNotEqualTo(addressRepository.findOne(id)); } }