package org.hibernate.envers.test.integration.collection.norevision;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;
import org.hibernate.envers.test.BaseEnversFunctionalTestCase;
import org.hibernate.envers.test.Priority;
import org.junit.Test;
import java.util.List;
public abstract class AbstractCollectionChangeTest extends BaseEnversFunctionalTestCase {
protected Integer personId;
@Override
protected void configure(Configuration configuration) {
configuration.setProperty("org.hibernate.envers.revision_on_collection_change", getCollectionChangeValue());
}
@Override
protected Class<?>[] getAnnotatedClasses() {
return new Class[]{Person.class, Name.class};
}
protected abstract String getCollectionChangeValue();
protected abstract List<Integer> getExpectedPersonRevisions();
@Test
@Priority(10)
public void initData() {
Session session = openSession();
// Rev 1
session.getTransaction().begin();
Person p = new Person();
Name n = new Name();
n.setName("name1");
p.getNames().add(n);
session.saveOrUpdate(p);
session.getTransaction().commit();
// Rev 2
session.getTransaction().begin();
n.setName("Changed name");
session.saveOrUpdate(p);
session.getTransaction().commit();
// Rev 3
session.getTransaction().begin();
Name n2 = new Name();
n2.setName("name2");
p.getNames().add(n2);
session.getTransaction().commit();
personId = p.getId();
}
@Test
public void testPersonRevisionCount() {
assert getAuditReader().getRevisions(Person.class, personId).equals(getExpectedPersonRevisions());
}
}