Test for creating revision on collection change

This commit is contained in:
Svyatoslav Reyentenko 2010-12-02 03:07:03 +03:00 committed by adamw
parent b006a6c3c5
commit fd54b2df56
4 changed files with 155 additions and 0 deletions

View File

@ -0,0 +1,59 @@
package org.hibernate.envers.test.integration.collection.norevision;
import org.hibernate.MappingException;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;
import org.hibernate.envers.test.AbstractSessionTest;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Optional;
import org.testng.annotations.Test;
import java.io.File;
import java.net.URISyntaxException;
import java.net.URL;
public class CollectionChangeNoRevisionTest extends AbstractSessionTest {
private Integer personId;
@Override
protected void initMappings() throws MappingException, URISyntaxException {
URL url = Thread.currentThread().getContextClassLoader().getResource("mappings/norevision/mappings.hbm.xml");
config.addFile(new File(url.toURI()));
config.setProperty("org.hibernate.envers.revision_on_collection_change", "false");
}
@BeforeMethod(firstTimeOnly = true)
public void initData() {
newSessionFactory();
Person p = new Person();
Name n = new Name();
n.setName("name1");
p.getNames().add(n);
Transaction transaction = getSession().beginTransaction();
getSession().saveOrUpdate(p);
transaction.commit();
personId = p.getId();
System.err.print(p);
}
@Test
public void testPersonRevisionCount() {
Person p = (Person) getSession().createCriteria(Person.class).add(Restrictions.idEq(personId)).uniqueResult();
Name n2 = new Name();
n2.setName("name2");
p.getNames().add(n2);
Transaction transaction = getSession().beginTransaction();
getSession().saveOrUpdate(p);
transaction.commit();
int size = getAuditReader().getRevisions(Person.class, personId).size();
System.out.println(size);
Assert.assertEquals(config.getProperty("org.hibernate.envers.revision_on_collection_change"), "false");
Assert.assertEquals(size, 1);
}
}

View File

@ -0,0 +1,39 @@
package org.hibernate.envers.test.integration.collection.norevision;
import org.hibernate.envers.Audited;
import java.io.Serializable;
@Audited
public class Name implements Serializable {
private Integer id;
private String name;
private Person person;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
}

View File

@ -0,0 +1,36 @@
package org.hibernate.envers.test.integration.collection.norevision;
import org.hibernate.envers.AuditMappedBy;
import org.hibernate.envers.Audited;
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
@Audited
public class Person implements Serializable {
private Integer id;
@AuditMappedBy(mappedBy = "person")
private Set<Name> names;
public Person() {
names = new HashSet<Name>();
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Set<Name> getNames() {
return names;
}
public void setNames(Set<Name> names) {
this.names = names;
}
}

View File

@ -0,0 +1,21 @@
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="org.hibernate.envers.test.integration.collection.norevision.Person">
<id name="id">
<generator class="native"/>
</id>
<set name="names" cascade="save-update">
<key column="Person_Id"/>
<one-to-many class="org.hibernate.envers.test.integration.collection.norevision.Name"/>
</set>
</class>
<class name="org.hibernate.envers.test.integration.collection.norevision.Name">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<many-to-one name="person" class="org.hibernate.envers.test.integration.collection.norevision.Person"
column="Person_Id" cascade="save-update"/>
</class>
</hibernate-mapping>