如何使用Hibernate';s findByNamedQuery是否返回长字符串列表?
我使用Hibernate的getHibernateTemplate().findByNamedQuery()在SQL Server中执行存储过程(出于优化原因)。存储的进程应该返回一个long列表 从我所看到的情况来看,返回这样一个列表的唯一方法是创建一个专门用于Hibernate的包装类,并在@NamedNativeQuery声明中使用它:resultClass=LongWrapper.class 这真的是使用Hibernate的findByNamedQuery()函数返回long列表的唯一方法吗 问题是,我需要优化内存分配和性能,因为存储过程将返回接近一百万个long,所以我不愿意将已经包装好的long包装到我自己的包装器类中。似乎不必要的开销 有什么建议吗如何使用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列表的唯一方
提前谢谢你 您可以将方法重写为以下内容:
@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调用存储过程。你的问题是关于这个方法的?