2016-07-22 3 views
0

Я хочу вернуть список карт из моего createNativeQuery().getResultList(), где каждая карта представляет собой парное значение - значение, представляющее значение имени столбца. Я уже пытался использовать прямо в методе следующим образом:Как вернуть Список <Карта <String, Object >> с помощью Hibernate

public List<Map<String, Object>> execQuery(String nativeQuery) { 
    return entityManager().query(nativeQuery).getResultList(); 
} 

, но он всегда возвращает список. Кто-то знает, возможно ли то, что я хочу?
Реализация JPA, которую я использую, является Hibernate. В настоящее время я использую Java 8 (не знаю, соответствует ли эта информация для моего случая).
Любая помощь приветствуется. Спасибо заранее.

+1

делает STH нравится эта работа для вас? 'Query q1 = entityManager(). Query (nativeQuery); org.hibernate.Query hibernateQuery = ((org.hibernate.jpa.HibernateQuery) q1) .getHibernateQuery(); hibernateQuery.setResultTransformer (AliasToEntityMapResultTransformer.INSTANCE); ' – Apostolos

+1

Вы не можете выполнить только один запрос в JPQL. Преобразуйте результаты самостоятельно в то, что вам нужно –

+0

@Apostolos Большое спасибо, это решило мою проблему: D. Это привяжет мое приложение к Hibernate, но это не проблема прямо сейчас :). –

ответ

1

Пожалуйста, попробуйте с

Query q1 = entityManager().query(nativeQuery); 
org.hibernate.Query hibernateQuery =((org.hibernate.jpa.HibernateQuery)q1) .getHibernateQuery(); 
hibernateQuery.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);‌​ 
1

Вы можете использовать ResultTransformer трансформировать свои результаты в виде карты. Following the oficial documentation

Как это:

List<Map<String,Object>> mapaEntity = session 
 
    .createQuery("select e from Entity") 
 
    .setResultTransformer(new AliasToEntityMapResultTransformer()) 
 
    .list();

+0

Это, кажется, более чистое решение, но в моем текущем приложении у меня нет доступа к 'org.hibernate.Session' :(, но спасибо за ответ: –

Смежные вопросы