/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.envers.test.integration.entityNames.singleAssociatedAudited;
import java.io.File;
import java.net.URISyntaxException;
import java.net.URL;
import org.hibernate.MappingException;
import org.hibernate.envers.test.AbstractOneSessionTest;
import org.hibernate.envers.test.Priority;
import org.hibernate.testing.TestForIssue;
import org.junit.Assert;
import org.junit.Test;
/**
* @author Lukasz Antoniak (lukasz dot antoniak at gmail dot com)
*/
public class SingleDomainObjectToMultipleTablesTest extends AbstractOneSessionTest {
private long carId = 0;
private long ownerId = 0;
private long driverId = 0;
protected void initMappings() throws MappingException, URISyntaxException {
URL url = Thread.currentThread().getContextClassLoader().getResource(
"mappings/entityNames/singleAssociatedAudited/mappings.hbm.xml"
);
config.addFile( new File( url.toURI() ) );
}
@Test
@Priority(10)
public void initData() {
initializeSession();
//REV 1
getSession().getTransaction().begin();
Person owner = new Person( "Lukasz", 25 );
Person driver = new Person( "Kinga", 24 );
Car car = new Car( 1, owner, driver );
getSession().persist( "Personaje", owner );
getSession().persist( "Driveraje", driver );
getSession().persist( car );
getSession().getTransaction().commit();
carId = car.getId();
ownerId = owner.getId();
driverId = driver.getId();
}
@Test
@TestForIssue(jiraKey = "HHH-4648")
public void testSingleDomainObjectToMultipleTablesMapping() {
Car carVer1 = getAuditReader().find( Car.class, carId, 1 );
Person ownerVer1 = getAuditReader().find( Person.class, "Personaje", ownerId, 1 );
Person driverVer1 = getAuditReader().find( Person.class, "Driveraje", driverId, 1 );
/* Check ids. */
Assert.assertEquals( ownerVer1.getId(), carVer1.getOwner().getId() );
Assert.assertEquals( driverVer1.getId(), carVer1.getDriver().getId() );
/* Check object properties. */
Assert.assertEquals( "Lukasz", ownerVer1.getName() );
Assert.assertEquals( "Kinga", driverVer1.getName() );
Assert.assertEquals( 1, carVer1.getNumber() );
}
}