package io.ebeaninternal.server.deploy;
import io.ebean.bean.EntityBean;
import io.ebeaninternal.server.core.InternString;
The Exported foreign key and property.
Used to for Assoc Manys to create references etc.
/**
* The Exported foreign key and property.
* <p>
* Used to for Assoc Manys to create references etc.
* </p>
*/
public class ExportedProperty {
private final String foreignDbColumn;
private final BeanProperty property;
private final boolean embedded;
public ExportedProperty(boolean embedded, String foreignDbColumn, BeanProperty property) {
this.embedded = embedded;
this.foreignDbColumn = InternString.intern(foreignDbColumn);
this.property = property;
}
Return true if this is part of an embedded concatinated key.
/**
* Return true if this is part of an embedded concatinated key.
*/
public boolean isEmbedded() {
return embedded;
}
Return the property value from the bean.
/**
* Return the property value from the bean.
*/
public Object getValue(EntityBean bean) {
return property.getValue(bean);
}
Return the foreign database column matching this property.
We use this foreign database column in the query predicates
in preference to a parentProperty.idProperty = value.
Just using the foreign database column avoids triggering
a join to the 'parent' table.
/**
* Return the foreign database column matching this property.
* <p>
* We use this foreign database column in the query predicates
* in preference to a parentProperty.idProperty = value.
* Just using the foreign database column avoids triggering
* a join to the 'parent' table.
* </p>
*/
public String getForeignDbColumn() {
return foreignDbColumn;
}
Append a logical where for the foreign db column to logical property name,
/**
* Append a logical where for the foreign db column to logical property name,
*/
public void appendWhere(StringBuilder sb, String alias, String path) {
sb.append(alias).append(foreignDbColumn).append(" = ");
if (path != null) {
sb.append(path).append(".");
}
sb.append(property.getName());
}
}