package org.hibernate.test.bytecode.enhancement.join;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.cfg.Environment;
import org.hibernate.test.bytecode.enhancement.AbstractEnhancerTestTask;
public abstract class AbstractHHH3949TestTask extends AbstractEnhancerTestTask {
public Class<?>[] getAnnotatedClasses() {
return new Class<?>[] {Person.class, Vehicle.class};
}
public void prepare() {
Configuration cfg = new Configuration();
// cfg.setProperty( Environment.ENABLE_LAZY_LOAD_NO_TRANS, "true" );
cfg.setProperty( Environment.ENABLE_LAZY_LOAD_NO_TRANS, "false" );
cfg.setProperty( Environment.USE_SECOND_LEVEL_CACHE, "false" );
super.prepare( cfg );
Session session = getFactory().openSession();
Transaction tx = session.beginTransaction();
// it is important that the data associations remain as follows:
// * Johnny <-> Volkswagen Golf
// * Ricky <-> Subaru Impreza
// * Rosy -> none
// * none <- Renault Truck
//
// see #shouldHaveVehicle and #shouldHaveDriver
Person person1 = new Person( "Johnny" );
Person person2 = new Person( "Ricky" );
Person person3 = new Person( "Rosy" );
session.save( person1 );
session.save( person2 );
session.save( person3 );
Vehicle vehicle1 = new Vehicle( "Volkswagen Golf" );
vehicle1.setDriver( person1 );
session.save( vehicle1 );
Vehicle vehicle2 = new Vehicle( "Subaru Impreza" );
vehicle2.setDriver( person2 );
person2.setVehicle( vehicle2 );
session.save( vehicle2 );
Vehicle vehicle3 = new Vehicle( "Renault Truck" );
session.save( vehicle3 );
tx.commit();
session.close();
}
protected boolean shouldHaveVehicle(Person person) {
return "Johnny".equals( person.getName() )
|| "Ricky".equals( person.getName() );
}
protected boolean shouldHaveDriver(Vehicle vehicle) {
return "Volkswagen Golf".equals( vehicle.getName() )
|| "Subaru Impreza".equals( vehicle.getName() );
}
protected void cleanup() {
}
}