mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
Test for #110 - BeanSet of sub type with inheritance has null listen mode
This commit is contained in:
@@ -2,6 +2,7 @@ package com.avaje.tests.inheritance;
|
||||
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.avaje.ebean.BaseTestCase;
|
||||
import com.avaje.ebean.Ebean;
|
||||
@@ -18,8 +19,9 @@ public class TestDuplcateKeyException extends BaseTestCase {
|
||||
* it was considered safe to skip as it didn't take into account any derived classes
|
||||
* into account with e.g. collections and Cascade options </p>
|
||||
*/
|
||||
public void testQuery()
|
||||
{
|
||||
@Test
|
||||
public void testQuery() {
|
||||
|
||||
// Setup the data first
|
||||
final ListAttributeValue value1 = new ListAttributeValue();
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.avaje.tests.inheritance;
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.avaje.ebean.BaseTestCase;
|
||||
import com.avaje.ebean.Ebean;
|
||||
@@ -13,75 +14,76 @@ import com.avaje.tests.model.basic.Vehicle;
|
||||
import com.avaje.tests.model.basic.VehicleDriver;
|
||||
|
||||
public class TestInheritInsert extends BaseTestCase {
|
||||
|
||||
public void testCasting() {
|
||||
|
||||
Truck t = new Truck();
|
||||
t.setCapacity(10d);
|
||||
Ebean.save(t);
|
||||
|
||||
Vehicle v = Ebean.find(Vehicle.class, t.getId());
|
||||
if (v instanceof Truck){
|
||||
Truck t0 = (Truck)v;
|
||||
Assert.assertEquals(Double.valueOf(10d), t0.getCapacity());
|
||||
Assert.assertEquals(Double.valueOf(10d), ((Truck)v).getCapacity());
|
||||
Assert.assertNotNull(t0.getId());
|
||||
} else {
|
||||
Assert.assertTrue("v not a Truck?", false);
|
||||
}
|
||||
|
||||
VehicleDriver driver = new VehicleDriver();
|
||||
driver.setName("Jim");
|
||||
driver.setVehicle(v);
|
||||
|
||||
Ebean.save(driver);
|
||||
|
||||
VehicleDriver d1 = Ebean.find(VehicleDriver.class, driver.getId());
|
||||
v = d1.getVehicle();
|
||||
if (v instanceof Truck){
|
||||
Double capacity = ((Truck)v).getCapacity();
|
||||
Assert.assertEquals(Double.valueOf(10d), capacity);
|
||||
Assert.assertNotNull(v.getId());
|
||||
} else {
|
||||
Assert.assertTrue("v not a Truck?", false);
|
||||
}
|
||||
|
||||
List<VehicleDriver> list = Ebean.find(VehicleDriver.class).findList();
|
||||
for (VehicleDriver vehicleDriver : list) {
|
||||
if (vehicleDriver.getVehicle() instanceof Truck){
|
||||
Double capacity = ((Truck)vehicleDriver.getVehicle()).getCapacity();
|
||||
Assert.assertEquals(Double.valueOf(10d), capacity);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void testQuery() {
|
||||
|
||||
Car car = new Car();
|
||||
car.setLicenseNumber("MARIOS_CAR_LICENSE");
|
||||
Ebean.save(car);
|
||||
|
||||
@Test
|
||||
public void testCasting() {
|
||||
|
||||
VehicleDriver driver = new VehicleDriver();
|
||||
driver.setName("Mario");
|
||||
driver.setVehicle(car);
|
||||
Ebean.save(driver);
|
||||
Truck t = new Truck();
|
||||
t.setCapacity(10d);
|
||||
Ebean.save(t);
|
||||
|
||||
Query<VehicleDriver> query = Ebean.find(VehicleDriver.class);
|
||||
query.where().eq("vehicle.licenseNumber", "MARIOS_CAR_LICENSE");
|
||||
List<VehicleDriver> drivers = query.findList();
|
||||
|
||||
Assert.assertNotNull(drivers);
|
||||
Assert.assertEquals(1, drivers.size());
|
||||
Assert.assertNotNull(drivers.get(0));
|
||||
Vehicle v = Ebean.find(Vehicle.class, t.getId());
|
||||
if (v instanceof Truck) {
|
||||
Truck t0 = (Truck) v;
|
||||
Assert.assertEquals(Double.valueOf(10d), t0.getCapacity());
|
||||
Assert.assertEquals(Double.valueOf(10d), ((Truck) v).getCapacity());
|
||||
Assert.assertNotNull(t0.getId());
|
||||
} else {
|
||||
Assert.assertTrue("v not a Truck?", false);
|
||||
}
|
||||
|
||||
Assert.assertEquals("Mario", drivers.get(0).getName());
|
||||
Assert.assertEquals("MARIOS_CAR_LICENSE", drivers.get(0).getVehicle().getLicenseNumber());
|
||||
VehicleDriver driver = new VehicleDriver();
|
||||
driver.setName("Jim");
|
||||
driver.setVehicle(v);
|
||||
|
||||
Vehicle car2 = Ebean.find(Vehicle.class, car.getId());
|
||||
|
||||
car2.setLicenseNumber("test");
|
||||
Ebean.save(car);
|
||||
Ebean.save(driver);
|
||||
|
||||
}
|
||||
VehicleDriver d1 = Ebean.find(VehicleDriver.class, driver.getId());
|
||||
v = d1.getVehicle();
|
||||
if (v instanceof Truck) {
|
||||
Double capacity = ((Truck) v).getCapacity();
|
||||
Assert.assertEquals(Double.valueOf(10d), capacity);
|
||||
Assert.assertNotNull(v.getId());
|
||||
} else {
|
||||
Assert.assertTrue("v not a Truck?", false);
|
||||
}
|
||||
|
||||
List<VehicleDriver> list = Ebean.find(VehicleDriver.class).findList();
|
||||
for (VehicleDriver vehicleDriver : list) {
|
||||
if (vehicleDriver.getVehicle() instanceof Truck) {
|
||||
Double capacity = ((Truck) vehicleDriver.getVehicle()).getCapacity();
|
||||
Assert.assertEquals(Double.valueOf(10d), capacity);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testQuery() {
|
||||
|
||||
Car car = new Car();
|
||||
car.setLicenseNumber("MARIOS_CAR_LICENSE");
|
||||
Ebean.save(car);
|
||||
|
||||
VehicleDriver driver = new VehicleDriver();
|
||||
driver.setName("Mario");
|
||||
driver.setVehicle(car);
|
||||
Ebean.save(driver);
|
||||
|
||||
Query<VehicleDriver> query = Ebean.find(VehicleDriver.class);
|
||||
query.where().eq("vehicle.licenseNumber", "MARIOS_CAR_LICENSE");
|
||||
List<VehicleDriver> drivers = query.findList();
|
||||
|
||||
Assert.assertNotNull(drivers);
|
||||
Assert.assertEquals(1, drivers.size());
|
||||
Assert.assertNotNull(drivers.get(0));
|
||||
|
||||
Assert.assertEquals("Mario", drivers.get(0).getName());
|
||||
Assert.assertEquals("MARIOS_CAR_LICENSE", drivers.get(0).getVehicle().getLicenseNumber());
|
||||
|
||||
Vehicle car2 = Ebean.find(Vehicle.class, car.getId());
|
||||
|
||||
car2.setLicenseNumber("test");
|
||||
Ebean.save(car);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
package com.avaje.tests.inheritance;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.avaje.ebean.BaseTestCase;
|
||||
import com.avaje.ebean.Ebean;
|
||||
import com.avaje.ebean.bean.BeanCollection.ModifyListenMode;
|
||||
import com.avaje.ebean.common.BeanList;
|
||||
import com.avaje.tests.model.basic.Animal;
|
||||
import com.avaje.tests.model.basic.AnimalShelter;
|
||||
import com.avaje.tests.model.basic.Cat;
|
||||
import com.avaje.tests.model.basic.Dog;
|
||||
|
||||
public class TestInheritanceOnMany extends BaseTestCase {
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
|
||||
Cat cat = new Cat();
|
||||
cat.setName("Puss");
|
||||
Ebean.save(cat);
|
||||
|
||||
Dog dog = new Dog();
|
||||
dog.setRegistrationNumber("DOGGIE");
|
||||
Ebean.save(dog);
|
||||
|
||||
AnimalShelter shelter = new AnimalShelter();
|
||||
shelter.setName("My Animal Shelter");
|
||||
shelter.getAnimals().add(cat);
|
||||
shelter.getAnimals().add(dog);
|
||||
|
||||
Ebean.save(shelter);
|
||||
|
||||
AnimalShelter shelter2 = Ebean.find(AnimalShelter.class, shelter.getId());
|
||||
List<Animal> animals = shelter2.getAnimals();
|
||||
|
||||
BeanList<?> beanList = (BeanList<?>)animals;
|
||||
ModifyListenMode modifyListenMode = beanList.getModifyListenMode();
|
||||
|
||||
Assert.assertNotNull(modifyListenMode);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -2,6 +2,7 @@ package com.avaje.tests.inheritance;
|
||||
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.avaje.ebean.BaseTestCase;
|
||||
import com.avaje.ebean.Ebean;
|
||||
@@ -10,6 +11,7 @@ import com.avaje.tests.model.basic.TIntRoot;
|
||||
|
||||
public class TestIntInherit extends BaseTestCase {
|
||||
|
||||
@Test
|
||||
public void testMe() {
|
||||
|
||||
TIntRoot r = new TIntRoot();
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.avaje.tests.inheritance;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@@ -20,6 +21,7 @@ public class TestSkippable extends BaseTestCase {
|
||||
* it was considered safe to skip as it didn't take into account any derived classes
|
||||
* into account with e.g. collections and Cascade options </p>
|
||||
*/
|
||||
@Test
|
||||
public void testQuery() {
|
||||
|
||||
// Setup the data first
|
||||
|
||||
@@ -5,6 +5,7 @@ import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Inheritance;
|
||||
import javax.persistence.InheritanceType;
|
||||
import javax.persistence.ManyToOne;
|
||||
import javax.persistence.Table;
|
||||
import javax.persistence.Version;
|
||||
|
||||
@@ -20,6 +21,9 @@ public abstract class Animal {
|
||||
@Version
|
||||
Long version;
|
||||
|
||||
@ManyToOne
|
||||
AnimalShelter shelter;
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
@@ -35,4 +39,13 @@ public abstract class Animal {
|
||||
public void setVersion(Long version) {
|
||||
this.version = version;
|
||||
}
|
||||
|
||||
public AnimalShelter getShelter() {
|
||||
return shelter;
|
||||
}
|
||||
|
||||
public void setShelter(AnimalShelter shelter) {
|
||||
this.shelter = shelter;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
package com.avaje.tests.model.basic;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.persistence.CascadeType;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.OneToMany;
|
||||
import javax.persistence.Version;
|
||||
|
||||
import com.avaje.ebean.annotation.PrivateOwned;
|
||||
|
||||
@Entity
|
||||
public class AnimalShelter {
|
||||
|
||||
@Id
|
||||
Long id;
|
||||
|
||||
@Version
|
||||
Long version;
|
||||
|
||||
String name;
|
||||
|
||||
@OneToMany(cascade=CascadeType.PERSIST, mappedBy="shelter")
|
||||
@PrivateOwned
|
||||
List<Animal> animals;
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Long getVersion() {
|
||||
return version;
|
||||
}
|
||||
|
||||
public void setVersion(Long version) {
|
||||
this.version = version;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public List<Animal> getAnimals() {
|
||||
return animals;
|
||||
}
|
||||
|
||||
public void setAnimals(List<Animal> animals) {
|
||||
this.animals = animals;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -6,9 +6,9 @@ import javax.persistence.Entity;
|
||||
@Entity
|
||||
@DiscriminatorValue("CAT")
|
||||
public class Cat extends Animal {
|
||||
|
||||
|
||||
String name;
|
||||
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user