Search in sources :

Example 1 with EmbeddedResult

use of org.apache.cayenne.map.EmbeddedResult in project cayenne by apache.

the class CustomColumnSetExtractor method extractEmbeddedObject.

private void extractEmbeddedObject(String prefix, Property<?> property) {
    Object o = property.getExpression().evaluate(context.getMetadata().getObjEntity());
    if (!(o instanceof EmbeddedAttribute)) {
        throw new CayenneRuntimeException("EmbeddedAttribute expected, %s found", o);
    }
    EmbeddedAttribute attribute = (EmbeddedAttribute) o;
    EmbeddedResult result = new EmbeddedResult(attribute.getEmbeddable(), attribute.getAttributes().size());
    attribute.getAttributes().forEach(attr -> {
        Node sqlNode = context.getQualifierTranslator().translate(ExpressionFactory.dbPathExp(attr.getDbAttributePath()));
        context.addResultNode(sqlNode, true, null, null);
        result.addAttribute(attr);
    });
    context.getSqlResult().addEmbeddedResult(result);
}
Also used : EmbeddedResult(org.apache.cayenne.map.EmbeddedResult) Node(org.apache.cayenne.access.sqlbuilder.sqltree.Node) CayenneRuntimeException(org.apache.cayenne.CayenneRuntimeException) EmbeddedAttribute(org.apache.cayenne.map.EmbeddedAttribute) EmbeddableObject(org.apache.cayenne.EmbeddableObject)

Aggregations

CayenneRuntimeException (org.apache.cayenne.CayenneRuntimeException)1 EmbeddableObject (org.apache.cayenne.EmbeddableObject)1 Node (org.apache.cayenne.access.sqlbuilder.sqltree.Node)1 EmbeddedAttribute (org.apache.cayenne.map.EmbeddedAttribute)1 EmbeddedResult (org.apache.cayenne.map.EmbeddedResult)1