如何使用Hibernate';s findByNamedQuery是否返回长字符串列表?

如何使用Hibernate';s findByNamedQuery是否返回长字符串列表?,hibernate,stored-procedures,query-optimization,wrapper,named-query,Hibernate,Stored Procedures,Query Optimization,Wrapper,Named Query,我使用Hibernate的getHibernateTemplate().findByNamedQuery()在SQL Server中执行存储过程(出于优化原因)。存储的进程应该返回一个long列表 从我所看到的情况来看,返回这样一个列表的唯一方法是创建一个专门用于Hibernate的包装类,并在@NamedNativeQuery声明中使用它:resultClass=LongWrapper.class 这真的是使用Hibernate的findByNamedQuery()函数返回long列表的唯一方

我使用Hibernate的getHibernateTemplate().findByNamedQuery()在SQL Server中执行存储过程(出于优化原因)。存储的进程应该返回一个long列表

从我所看到的情况来看,返回这样一个列表的唯一方法是创建一个专门用于Hibernate的包装类,并在@NamedNativeQuery声明中使用它:resultClass=LongWrapper.class

这真的是使用Hibernate的findByNamedQuery()函数返回long列表的唯一方法吗

问题是,我需要优化内存分配和性能,因为存储过程将返回接近一百万个long,所以我不愿意将已经包装好的long包装到我自己的包装器类中。似乎不必要的开销

有什么建议吗


提前谢谢你

您可以将方法重写为以下内容:

@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;            
}
@SuppressWarnings(“未选中”)
公共列表getIds(){
Session=getSession();
Query namedQuery=session.getNamedQuery(查询ID);
字符串queryForIds=namedQuery.getQueryString();
SQLQuery=session.createSQLQuery(queryForIds);
addScalar(“ID”,Hibernate.LONG);
列表结果=query.List();
返回结果;
}

我从

获得了此解决方案,因此,您是否能够使用findByNamedQuery()调用SP?还有其他方法可以从spring调用存储过程。你的问题是关于这个方法的?