Короткий ответ невозможен с jdbctemplate, если вы не создадите запрос, добавляющий имена столбцов вручную.
Если вы используете Hibernate / JPA, вы можете использовать критерий запроса, предполагая, что у вас есть несколько отдельных POJOS длякаждый конкретный тип продукта и POJO для денормализованного типа.
CriteriaQuery<T> cq = builder.createQuery(SpecificProduct.class);
// write the Root, Path elements as usual
Root<EntityClazz> root = cq.from(EntityClazz.class);
cq.multiselect(root.get(EntityClazz_.COL1), root.get(EntityClazz_.COL2)); //using metamodel
List<T> result = em.createQuery(cq).getResultList()
См. аналогичный ответ здесь