mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
#1349 - Example passing test for - RawSql fetch object with inheritance / 2
This commit is contained in:
@@ -4,13 +4,18 @@ import io.ebean.BaseTestCase;
|
||||
import io.ebean.Ebean;
|
||||
import io.ebean.RawSql;
|
||||
import io.ebean.RawSqlBuilder;
|
||||
import org.tests.model.basic.Truck;
|
||||
import org.tests.model.basic.Vehicle;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.tests.model.basic.Truck;
|
||||
import org.tests.model.basic.Vehicle;
|
||||
import org.tests.model.basic.VehicleLeaseLong;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
public class TestInheritanceRawSql extends BaseTestCase {
|
||||
|
||||
@Test
|
||||
@@ -48,4 +53,63 @@ public class TestInheritanceRawSql extends BaseTestCase {
|
||||
Ebean.save(truck2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testJoinToInheritance() {
|
||||
|
||||
VehicleLeaseLong longLease = new VehicleLeaseLong();
|
||||
longLease.setName("Long one");
|
||||
longLease.setBond(new BigDecimal("1000"));
|
||||
longLease.setMinDuration(100);
|
||||
longLease.setActiveEnd(LocalDate.now());
|
||||
|
||||
Ebean.save(longLease);
|
||||
|
||||
|
||||
Truck truck = new Truck();
|
||||
truck.setCapacity(100D);
|
||||
truck.setLicenseNumber("ZK1");
|
||||
truck.setLease(longLease);
|
||||
|
||||
Ebean.save(truck);
|
||||
|
||||
|
||||
String sql = "select v.dtype, v.id, v.license_number, l.dtype, l.id, l.name " +
|
||||
"from vehicle v " +
|
||||
"join vehicle_lease l on l.id = v.lease_id " +
|
||||
"where v.id = ?";
|
||||
|
||||
RawSql rawSql = RawSqlBuilder.parse(sql)
|
||||
.tableAliasMapping("v", null)
|
||||
.tableAliasMapping("l", "lease")
|
||||
.create();
|
||||
|
||||
Vehicle veh = Ebean.find(Vehicle.class)
|
||||
.setRawSql(rawSql)
|
||||
.setParameter(1, truck.getId())
|
||||
.findOne();
|
||||
|
||||
assertThat(veh).isNotNull();
|
||||
assertThat(veh.getLicenseNumber()).isEqualTo("ZK1");
|
||||
assertThat(veh.getLease().getName()).isEqualTo("Long one");
|
||||
|
||||
|
||||
RawSql rawSql2 = RawSqlBuilder.parse(sql)
|
||||
.columnMappingIgnore("v.dtype")
|
||||
.columnMapping("v.id", "id")
|
||||
.columnMapping("v.license_number", "licenseNumber")
|
||||
.columnMappingIgnore("l.dtype")
|
||||
.columnMapping("l.id", "lease.id")
|
||||
.columnMapping("l.name", "lease.name")
|
||||
.create();
|
||||
|
||||
Vehicle veh2 = Ebean.find(Vehicle.class)
|
||||
.setRawSql(rawSql2)
|
||||
.setParameter(1, truck.getId())
|
||||
.findOne();
|
||||
|
||||
assertThat(veh2).isNotNull();
|
||||
assertThat(veh2.getLicenseNumber()).isEqualTo("ZK1");
|
||||
assertThat(veh2.getLease().getName()).isEqualTo("Long one");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package org.tests.model.basic;
|
||||
import javax.persistence.DiscriminatorColumn;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Inheritance;
|
||||
import javax.persistence.ManyToOne;
|
||||
import java.util.Date;
|
||||
|
||||
@Entity
|
||||
@@ -19,6 +20,9 @@ public abstract class Vehicle extends BasicDomain {
|
||||
// @Transient
|
||||
private transient String testTransient;
|
||||
|
||||
@ManyToOne
|
||||
private VehicleLease lease;
|
||||
|
||||
public String getLicenseNumber() {
|
||||
return licenseNumber;
|
||||
}
|
||||
@@ -42,4 +46,12 @@ public abstract class Vehicle extends BasicDomain {
|
||||
public void setTestTransient(String testTransient) {
|
||||
this.testTransient = testTransient;
|
||||
}
|
||||
|
||||
public VehicleLease getLease() {
|
||||
return lease;
|
||||
}
|
||||
|
||||
public void setLease(VehicleLease lease) {
|
||||
this.lease = lease;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
package org.tests.model.basic;
|
||||
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Inheritance;
|
||||
import javax.persistence.Version;
|
||||
import java.time.LocalDate;
|
||||
|
||||
@Entity
|
||||
@Inheritance
|
||||
public abstract class VehicleLease {
|
||||
|
||||
@Id
|
||||
long id;
|
||||
|
||||
String name;
|
||||
|
||||
LocalDate activeStart;
|
||||
|
||||
LocalDate activeEnd;
|
||||
|
||||
@Version
|
||||
long version;
|
||||
|
||||
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 LocalDate getActiveStart() {
|
||||
return activeStart;
|
||||
}
|
||||
|
||||
public void setActiveStart(LocalDate activeStart) {
|
||||
this.activeStart = activeStart;
|
||||
}
|
||||
|
||||
public LocalDate getActiveEnd() {
|
||||
return activeEnd;
|
||||
}
|
||||
|
||||
public void setActiveEnd(LocalDate activeEnd) {
|
||||
this.activeEnd = activeEnd;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package org.tests.model.basic;
|
||||
|
||||
import javax.persistence.DiscriminatorValue;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Inheritance;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Entity
|
||||
@Inheritance
|
||||
@DiscriminatorValue("LONG")
|
||||
public class VehicleLeaseLong extends VehicleLease {
|
||||
|
||||
BigDecimal bond;
|
||||
|
||||
int minDuration;
|
||||
|
||||
public BigDecimal getBond() {
|
||||
return bond;
|
||||
}
|
||||
|
||||
public void setBond(BigDecimal bond) {
|
||||
this.bond = bond;
|
||||
}
|
||||
|
||||
public int getMinDuration() {
|
||||
return minDuration;
|
||||
}
|
||||
|
||||
public void setMinDuration(int minDuration) {
|
||||
this.minDuration = minDuration;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package org.tests.model.basic;
|
||||
|
||||
import javax.persistence.DiscriminatorValue;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Inheritance;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Entity
|
||||
@Inheritance
|
||||
@DiscriminatorValue("SHORT")
|
||||
public class VehicleLeaseShort extends VehicleLease {
|
||||
|
||||
|
||||
BigDecimal dayRate;
|
||||
|
||||
Integer maxDays;
|
||||
|
||||
public BigDecimal getDayRate() {
|
||||
return dayRate;
|
||||
}
|
||||
|
||||
public void setDayRate(BigDecimal dayRate) {
|
||||
this.dayRate = dayRate;
|
||||
}
|
||||
|
||||
public Integer getMaxDays() {
|
||||
return maxDays;
|
||||
}
|
||||
|
||||
public void setMaxDays(Integer maxDays) {
|
||||
this.maxDays = maxDays;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user