/*
* (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.more;
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.more.MoreTypesDemo;
import com.company.demo.repository.more.MoreTypesDemoGenerator;
import com.company.demo.repository.more.MoreTypesDemoRepository;
/**
* Integration test on {@link MoreTypesDemoRepository}
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath*:spring/applicationContext-test.xml" })
@Transactional
public class MoreTypesDemoRepositoryWithRealSessionTest {
@SuppressWarnings("unused")
private static final Logger log = Logger.getLogger(MoreTypesDemoRepositoryWithRealSessionTest.class);
@PersistenceContext
private EntityManager entityManager;
@Autowired
private MoreTypesDemoRepository moreTypesDemoRepository;
@Autowired
private MoreTypesDemoGenerator moreTypesDemoGenerator;
@Test
public void identityShouldBePreserved() {
MoreTypesDemo moreTypesDemo = moreTypesDemoGenerator.getMoreTypesDemo();
// add it to a Set before saving (force equals/hashcode)
Sets.newHashSet(moreTypesDemo);
moreTypesDemoRepository.save(moreTypesDemo);
entityManager.flush();
// reload it from cache and check equality
Integer id = moreTypesDemo.getId();
assertThat(moreTypesDemo).isEqualTo(moreTypesDemoRepository.findOne(id));
// clear cache to force reload from db
entityManager.clear();
// pk are equals...
assertThat(moreTypesDemo.getId()).isEqualTo(moreTypesDemoRepository.findOne(id).getId());
// but since you do not use a business key, equality is lost.
assertThat(moreTypesDemo).isNotEqualTo(moreTypesDemoRepository.findOne(id));
}
}