public List<CustomerWithPurchaseStats> getAllCustomersWithPurchaseStats() { StringBuilder sql = new StringBuilder("SELECT cu.id, <manually add all fields you need mapped ").append(" FROM customer cu "); RawSqlBuilder rawSqlBuilder = RawSqlBuilder.parse(sql.toString()); rawSqlBuilder.tableAliasMapping("cu", "customer").create(); return Ebean.find(CustomerWithPurchaseStats.class) .setRawSql(rawSqlBuilder.create()) .findList(); }
private void readEntityMapping(ClassLoader classLoader, XmEntity entityDeploy) { String entityClassName = entityDeploy.getClazz(); Class<?> entityClass; try { entityClass = Class.forName(entityClassName, false, classLoader); } catch (Exception e) { logger.error("Could not load entity bean class " + entityClassName + " for ebean.xml entry"); return; } DeployBeanInfo<?> info = deployInfoMap.get(entityClass); if (info == null) { logger.error("No entity bean for ebean.xml entry " + entityClassName); } else { for (XmRawSql sql : entityDeploy.getRawSql()) { RawSqlBuilder builder = RawSqlBuilder.parse(sql.getQuery().getValue()); for (XmColumnMapping columnMapping : sql.getColumnMapping()) { builder.columnMapping(columnMapping.getColumn(), columnMapping.getProperty()); } for (XmAliasMapping aliasMapping : sql.getAliasMapping()) { builder.tableAliasMapping(aliasMapping.getAlias(), aliasMapping.getProperty()); } info.addRawSql(sql.getName(), builder.create()); } for (XmNamedQuery namedQuery : entityDeploy.getNamedQuery()) { info.addNamedQuery(namedQuery.getName(), namedQuery.getQuery().getValue()); } } }