package org.hibernate.test.bytecode.enhancement.join;
import java.util.List;
import org.hibernate.Session;
import org.junit.Assert;
public class HHH3949TestTask2 extends AbstractHHH3949TestTask {
public void execute() {
performQueryAndVerifyResults( "from Vehicle v fetch all properties left join fetch v.driver" );
performQueryAndVerifyResults( "from Vehicle v left join fetch v.driver" );
}
@SuppressWarnings("unchecked")
public void performQueryAndVerifyResults(String query) {
// 1) open session
Session session = getFactory().openSession();
session.getTransaction().begin();
// 2) perform the query
List<Vehicle> vehicles = (List<Vehicle>) session.createQuery( query ).list();
// 3) close the session : this ensures that no more queries and/or data loading happen
session.getTransaction().commit();
session.close();
// 4) verify the results
for ( Vehicle vehicle : vehicles ) {
if ( shouldHaveDriver( vehicle ) ) {
Assert.assertNotNull( vehicle.getDriver() );
Assert.assertNotNull( vehicle.getDriver().getVehicle() );
}
}
}
}