public void testJoinHierarchyAssocOne() {
Ebean.createUpdate(Vehicle.class, "delete from vehicle");
Address address = new Address();
address.setLine1("Street");
address.setLine2("Street");
address.setCity("City");
address.setCretime(new Timestamp(new Date().getTime()));
Ebean.save(address);
Car c = new Car();
c.setLicenseNumber("C6788");
c.setDriver("CarDriver");
c.setRegistrationDate(new Date());
Ebean.save(c);
VehicleDriver driver = new VehicleDriver();
driver.setVehicle(c);
driver.setAddress(address);
driver.setLicenseIssuedOn(new Date());
Ebean.save(driver);
final String line1 = "Street1";
final String line2 = "Street2";
final String city = "City";
int nrDrivers = 2;
for (int i = 0; i < nrDrivers;i++){
Address address1 = new Address();
address1.setLine1(line1);
address1.setLine2(line2);
address1.setCity(city);
Ebean.save(address1);
Trip trip = new Trip();
trip.setVehicleDriver(driver);
trip.setAddress(address1);
trip.setCretime(new Timestamp(new Date().getTime()));
Ebean.save(trip);
}
Ebean.beginTransaction();
Query<Trip> q = Ebean.createQuery(Trip.class, "join address join vehicleDriver ");
List<Trip> trips = q.findList();
Assert.assertTrue(trips.size() == nrDrivers);
for (Trip t:trips){
Address a = t.getAddress();
Assert.assertTrue(line1.equals(a.getLine1()));
Assert.assertTrue(line2.equals(a.getLine2()));
Assert.assertTrue(city.equals(a.getCity()));
}
Ebean.endTransaction();
}