mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
initial add of EbeanORM server based on v2.8.1
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
package com.avaje.tests.basic;
|
||||
|
||||
import java.sql.Timestamp;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import junit.framework.Assert;
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import com.avaje.ebean.Ebean;
|
||||
import com.avaje.ebean.Query;
|
||||
import com.avaje.tests.model.basic.Address;
|
||||
import com.avaje.tests.model.basic.Car;
|
||||
import com.avaje.tests.model.basic.Trip;
|
||||
import com.avaje.tests.model.basic.Vehicle;
|
||||
import com.avaje.tests.model.basic.VehicleDriver;
|
||||
|
||||
public class TestJoinInheritance extends TestCase {
|
||||
|
||||
|
||||
/**
|
||||
* Test join hierarchy assoc one.
|
||||
*
|
||||
* This test catches the problem where the discriminator column is select
|
||||
* but is not skipped if the parent bean is already in the presistence context.
|
||||
*
|
||||
* Test case: We have several trips with different addresses but always the same
|
||||
* driver and car (the cars could be different). So the driver will be loaded
|
||||
* when the first trip is loaded but when the second trip is loaded the driver is
|
||||
* found in the persistence context. So the bean is not read but the index in the
|
||||
* result set is forwarded by the number of properties - however, the vehicle type
|
||||
* column was not being skipped - but the query reads happily - only the data is
|
||||
* then wrong in the address object.
|
||||
*/
|
||||
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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user