package org.hibernate.envers.test.integration.notinsertable.manytoone;
import org.hibernate.ejb.Ejb3Configuration;
import org.hibernate.envers.test.AbstractEntityTest;
import org.hibernate.envers.test.Priority;
import org.junit.Test;
import javax.persistence.EntityManager;
import java.util.Arrays;
public class ManyToOneNotInsertable extends AbstractEntityTest {
private Integer mto_id1;
private Integer type_id1;
private Integer type_id2;
public void configure(Ejb3Configuration cfg) {
cfg.addAnnotatedClass(ManyToOneNotInsertableEntity.class);
cfg.addAnnotatedClass(NotInsertableEntityType.class);
}
@Test
@Priority(10)
public void initData() {
EntityManager em = getEntityManager();
mto_id1 = 1;
type_id1 = 2;
type_id2 = 3;
// Rev 1
// Preparing the types
em.getTransaction().begin();
NotInsertableEntityType type1 = new NotInsertableEntityType(type_id1, "type1");
NotInsertableEntityType type2 = new NotInsertableEntityType(type_id2, "type2");
em.persist(type1);
em.persist(type2);
em.getTransaction().commit();
// Rev 2
em.getTransaction().begin();
ManyToOneNotInsertableEntity master = new ManyToOneNotInsertableEntity(mto_id1, type_id1, type1);
em.persist(master);
em.getTransaction().commit();
// Rev 2
em.getTransaction().begin();
master = em.find(ManyToOneNotInsertableEntity.class, mto_id1);
master.setNumber(type_id2);
em.getTransaction().commit();
}
@Test
public void testRevisionCounts() {
assert Arrays.asList(1).equals(getAuditReader().getRevisions(NotInsertableEntityType.class, type_id1));
assert Arrays.asList(1).equals(getAuditReader().getRevisions(NotInsertableEntityType.class, type_id2));
assert Arrays.asList(2, 3).equals(getAuditReader().getRevisions(ManyToOneNotInsertableEntity.class, mto_id1));
}
@Test
public void testNotInsertableEntity() {
ManyToOneNotInsertableEntity ver1 = getAuditReader().find(ManyToOneNotInsertableEntity.class, mto_id1, 1);
ManyToOneNotInsertableEntity ver2 = getAuditReader().find(ManyToOneNotInsertableEntity.class, mto_id1, 2);
ManyToOneNotInsertableEntity ver3 = getAuditReader().find(ManyToOneNotInsertableEntity.class, mto_id1, 3);
NotInsertableEntityType type1 = getEntityManager().find(NotInsertableEntityType.class, type_id1);
NotInsertableEntityType type2 = getEntityManager().find(NotInsertableEntityType.class, type_id2);
assert ver1 == null;
assert ver2.getType().equals(type1);
assert ver3.getType().equals(type2);
}
}