package org.hibernate.envers.test.integration.collection.norevision;
import org.hibernate.MappingException;
import org.hibernate.envers.test.AbstractSessionTest;
import org.hibernate.envers.test.Priority;
import org.junit.Test;
import java.net.URISyntaxException;
import java.util.List;
public abstract class AbstractCollectionChangeTest extends AbstractSessionTest {
protected Integer personId;
@Override
protected void initMappings() throws MappingException, URISyntaxException {
config.addAnnotatedClass(Person.class);
config.addAnnotatedClass(Name.class);
config.setProperty("org.hibernate.envers.revision_on_collection_change", getCollectionChangeValue());
}
protected abstract String getCollectionChangeValue();
protected abstract List<Integer> getExpectedPersonRevisions();
@Test
@Priority(10)
public void initData() {
newSessionFactory();
// Rev 1
getSession().getTransaction().begin();
Person p = new Person();
Name n = new Name();
n.setName("name1");
p.getNames().add(n);
getSession().saveOrUpdate(p);
getSession().getTransaction().commit();
// Rev 2
getSession().getTransaction().begin();
n.setName("Changed name");
getSession().saveOrUpdate(p);
getSession().getTransaction().commit();
// Rev 3
getSession().getTransaction().begin();
Name n2 = new Name();
n2.setName("name2");
p.getNames().add(n2);
getSession().getTransaction().commit();
personId = p.getId();
}
@Test
public void testPersonRevisionCount() {
assert getAuditReader().getRevisions(Person.class, personId).equals(getExpectedPersonRevisions());
}
}