package org.hibernate.envers.test.integration.entityNames.manyToManyAudited; import org.hibernate.MappingException; import org.hibernate.envers.test.AbstractOneSessionTest; import org.hibernate.envers.test.Priority; import org.junit.Test; import java.io.File; import java.net.URISyntaxException; import java.net.URL; import java.util.ArrayList; import java.util.List; /** * @author Hernán Chanfreau * */ public class ReadEntityWithAuditedManyToManyTest extends AbstractOneSessionTest{ private long id_car1; private long id_car2; private long id_pers1; private Person person1; private Car car1; private Person person1_1; private Car car1_2; protected void initMappings() throws MappingException, URISyntaxException { URL url = Thread.currentThread().getContextClassLoader().getResource("mappings/entityNames/manyToManyAudited/mappings.hbm.xml"); config.addFile(new File(url.toURI())); } @Test @Priority(10) public void initData() { initializeSession(); Person pers1 = new Person("Hernan", 28); Person pers2 = new Person("Leandro", 29); Person pers3 = new Person("Barba", 32); Person pers4 = new Person("Camomo", 15); //REV 1 getSession().getTransaction().begin(); List<Person > owners = new ArrayList<Person>(); owners.add(pers1); owners.add(pers2); owners.add(pers3); Car car1 = new Car(5, owners); getSession().persist(car1); getSession().getTransaction().commit(); id_pers1 = pers1.getId(); id_car1 = car1.getId(); owners = new ArrayList<Person>(); owners.add(pers2); owners.add(pers3); owners.add(pers4); Car car2 = new Car(27, owners); //REV 2 getSession().getTransaction().begin(); Person person1 = (Person)getSession().get("Personaje", id_pers1); person1.setName("Hernan David"); person1.setAge(40); getSession().persist(car1); getSession().persist(car2); getSession().getTransaction().commit(); id_car2 = car2.getId(); } private void loadDataOnSessionAndAuditReader() { car1_2 = getAuditReader().find(Car.class, id_car1, 2); Car car2_2 = getAuditReader().find(Car.class, id_car2, 2); // navigate through relations to load objects for (Person owner : car1_2.getOwners()) { for (Car ownedCar : owner.getCars()) { ownedCar.getNumber(); } } for (Person owner : car2_2.getOwners()) { for (Car ownedCar : owner.getCars()) { ownedCar.getNumber(); } } car1 = (Car)getSession().get(Car.class, id_car1); person1 = (Person)getSession().get("Personaje", id_pers1); person1_1 = getAuditReader().find(Person.class, "Personaje", id_pers1, 1); } private void checkEntityNames() { String currPerson1EN = getSession().getEntityName(person1); String currCar1EN = getSession().getEntityName(car1); String person1_1EN = getAuditReader().getEntityName(id_pers1, 1, person1_1); assert(currPerson1EN.equals(person1_1EN)); String car1_2EN = getAuditReader().getEntityName(id_car1, 2, car1_2); assert(currCar1EN.equals(car1_2EN)); } @Test public void testGetEntityNameManyYoManyWithEntityName() { loadDataOnSessionAndAuditReader(); checkEntityNames(); } @Test public void testGetEntityNameManyYoManyWithEntityNameInNewSession() { //force new session and AR forceNewSession(); loadDataOnSessionAndAuditReader(); checkEntityNames(); } }