@Override
    public Map<Long, Map<String, String>> getAttributes(final List<Meta> list) {
        final Map<Long, Map<String, String>> attributeMap = new HashMap<>();

        // Get a list of valid data ids.
        final List<Long> idList = list.stream()
                .map(Meta::getId)
                .collect(Collectors.toList());

        JooqUtil.contextResult(metaDbConnProvider, context -> context
                        .select(
                                META_VAL.META_ID,
                                META_VAL.META_KEY_ID,
                                META_VAL.VAL
                        )
                        .from(META_VAL)
                        .where(META_VAL.META_ID.in(idList))
                        .fetch())
                .forEach(r -> {
                    final int keyId = r.get(META_VAL.META_KEY_ID);
                    metaKeyService.getNameForId(keyId).ifPresent(name -> {
                        final long dataId = r.get(META_VAL.META_ID);
                        final String value = String.valueOf(r.get(META_VAL.VAL));
                        attributeMap.computeIfAbsent(dataId, k -> new HashMap<>()).put(name, value);
                    });
                });

        return attributeMap;

//        final SqlBuilder sql = new SqlBuilder();
//        sql.append("SELECT ");
//        sql.append(MetaValue.ID);
//        sql.append(", ");
//        sql.append(MetaValue.META_KEY_ID);
//        sql.append(", ");
//        sql.append(MetaValue.VALUE_NUMBER);
//        sql.append(", ");
//        sql.append(MetaValue.VALUE_STRING);
//        sql.append(" FROM ");
//        sql.append(MetaValue.TABLE_NAME);
//        sql.append(" WHERE ");
//        sql.append(MetaValue.ID);
//        sql.append(" in (");
//        sql.append(idList.toString());
//        sql.append(")");
//
//        // Status is a mandatory search
//
//        @SuppressWarnings("unchecked") final List<Object[]> list = entityManager.executeNativeQueryResultList(sql);
//
//        for (final Object[] row : list) {
//            final long dataId = ((Number) row[0]).longValue();
//            final String key = String.valueOf(row[1]);
//            String value = String.valueOf(row[2]);
//            if (row[3] != null) {
//                value = String.valueOf(row[3]);
//            }
//
//            final MetaKey metaKey = keyMap.get(Long.parseLong(key));
//            if (metaKey != null) {
//                rowMap.get(dataId).addAttribute(metaKey.getName(), value);
//            }
//        }

//        // Add additional data retention information.
//        rowMap.values().parallelStream().forEach(ruleDecorator::addMatchingRetentionRuleInfo);
//
//        return result;
    }
Convert a basic data list to a list of meta data using data attribute keys and values.
stroom-meta/stroom-meta-impl-db/src/main/java/stroom/meta/impl/db/MetaValueDaoImpl.java