mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
This part includes support for joins off an aggregation formula
on a ManyToOne.
e.g. We use min(customer) ... to 'query join' to customer
in the query below.
List<Contact> contacts = Ebean.find(Contact.class)
.select("lastName, min(customer)")
.fetchQuery("customer", "name, status")
.findList();
34 lines
893 B
Java
34 lines
893 B
Java
package io.ebeaninternal.server.deploy;
|
|
|
|
import io.ebeaninternal.server.query.SqlBeanLoad;
|
|
|
|
public class DynamicPropertyAggregationFormulaMTO extends DynamicPropertyAggregationFormula {
|
|
|
|
private final BeanPropertyAssocOne prop;
|
|
|
|
DynamicPropertyAggregationFormulaMTO(BeanPropertyAssocOne prop, String name, String parsedFormula, boolean aggregate, BeanProperty asTarget, String alias) {
|
|
super(name, prop.getIdScalarType(), parsedFormula, aggregate, asTarget, alias);
|
|
this.prop = prop;
|
|
}
|
|
|
|
@Override
|
|
public boolean isAggregationManyToOne() {
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public void load(SqlBeanLoad sqlBeanLoad) {
|
|
Object value;
|
|
try {
|
|
value = prop.read(sqlBeanLoad.ctx());
|
|
} catch (Exception e) {
|
|
sqlBeanLoad.ctx().handleLoadError(fullName, e);
|
|
return;
|
|
}
|
|
if (asTarget != null) {
|
|
sqlBeanLoad.load(asTarget, value);
|
|
}
|
|
}
|
|
|
|
}
|