public List<MappedDrink> findAllDrinksForUser(final int userId) {
        List<MappedDrink> drinks = new ArrayList<MappedDrink>();
        
        final String query = Conca.t(
            "select ",
            "   d.id                            as drinkId, ",
            "   d.date_consumed                 as dateConsumed, ",
            "   d.cost                          as cost, ",
            "   dt.id                           as typeId, ",
            "   dt.name                         as name, ",
            "   dt.descript                     as description, ",
            "   dt.cost_per_ml                  as costPerML, ",
            "   u.id                            as userId, ",
            "   u.username                      as username, ",
            "   u.active                        as active, ",
            "   u2.id                           as c_userId, ",
            "   u2.username                     as c_username, ",
            "   u2.active                       as c_active ",
            "from ",
            "   drink d join drink_type dt on (d.drinkTypeFk = dt.id) ",
            "   join user u on (d.userFk = u.id) ",
            "   join user u2 on (dt.created_by_userFk = u2.id) ",
            "where u.id = ? ",
            "order by dateConsumed desc"
        );
            
        final List<Object> values = new ArrayList<Object>();
        final List<Class<?>> types = new ArrayList<Class<?>>();

        values.add(userId);
        types.add(Integer.class);
        
        try {
            final ResultSet rs = execute(query, values, types);
            
            while (rs.next()) {
                final MappedDrink eaDrink = new MappedDrink();
                eaDrink.setDrinkId(rs.getInt("drinkId"));
                eaDrink.setDateConsumed(rs.getDate("dateConsumed"));
                eaDrink.setCost(rs.getFloat("cost"));
                
                final MappedDrinkType type = eaDrink.getType();
                type.setTypeId(rs.getInt("typeId"));
                type.setName(rs.getString("name"));
                type.setDescription(rs.getString("description"));
                type.setCostPerML(rs.getDouble("costPerML"));
                type.getCreatedBy().setId(rs.getInt("c_userId"));
                type.getCreatedBy().setUsername(rs.getString("c_username"));
                type.getCreatedBy().setActive(rs.getInt("c_active") == 1);
                
                eaDrink.getUser().setId(rs.getInt("userId"));
                eaDrink.getUser().setUsername(rs.getString("username"));
                eaDrink.getUser().setActive(rs.getInt("active") == 1);
                
                drinks.add(eaDrink);
            }
            
        } catch (Exception e) {
            log4jLogger.error(Conca.t("error occurred while attempting to find all drink for userid [", userId, "]"), e);
        }
        
        return drinks;
    }