0

Я использую Hibernate's getHibernateTemplate(). FindByNamedQuery(), чтобы выполнить хранимую процедуру в SQL Server (по причинам оптимизации). Сохраненная процедура должна возвращать список длин.Как использовать Hibernate findByNamedQuery для возврата списка длин?

Из того, что я могу видеть, единственный способ, которым я могу вернуть такой список, чтобы создать класс-оболочку специально для Hibernate, и использовать это в рамках моей @NamedNativeQuery декларации: resultClass = LongWrapper.class

ли это действительно единственный способ вернуть список longs, используя функцию findByNameQuery() Hibernate?

Дело в том, что мне нужно оптимизировать распределение памяти и производительность, поскольку хранимая процедура вернется близко к миллиону longs, поэтому я не хочу обертывать уже завернутые Longs в мой собственный класс-оболочку. Похоже, лишние накладные расходы.

Любые предложения?

Благодарим вас заранее!

+0

так, вы в состоянии вызвать SP, используя ** findByNamedQuery() ** Есть другие? Пути тонны вызывают весовую форму хранимой процедуры. Ваш вопрос об этом методе? – ManuPK

ответ

1

Вы можете переписать метод следующим образом:

@SuppressWarnings("unchecked") 
public List<Long> getIds() { 
    Session session = getSession(); 
    Query namedQuery = session.getNamedQuery(QUERY_IDS); 
    String queryForIds = namedQuery.getQueryString(); 
    SQLQuery query = session.createSQLQuery(queryForIds); 
    query.addScalar("ID", Hibernate.LONG); 
    List<Long> result = query.list(); 
    return result;    
} 

Я получил это решение от how-do-i-use-hibernates-findbynamedquery-to-return-a-list-of-longs

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

  • Нет связанных вопросов^_^