标题:hibernate 的 sql 查询
只看楼主
z060831
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2013-8-3
结帖率:50%
 问题点数:0 回复次数:1 
hibernate 的 sql 查询
在数据库查询:
SELECT TOP 10 MB001,MB002,CASE WHEN B.MB025='M' THEN '自制件' WHEN B.MB025='S' THEN '委外件' WHEN B.MB025='P' THEN '采购件' ELSE B.MB025 END
FROM INVMB B
WHERE MB001 LIKE '5%'
得到的结果:
510312203041            103122    自制件
511183201041            111832    自制件
515131201043            151312    自制件
513211201121            132112    自制件
513201201121            132012    自制件
530131203000            301312    自制件
511723201121            117232    自制件
515093201121            150932    自制件
513432201121            134322    自制件
514192201121            141922    自制件

但是在用hibernate的sql查询 :
程序代码:
package testAnythings;

import java.util.List;

import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.transform.Transformers;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import stur.HibernateSessionFactory;

import Interface.ListDao;

public class testSQL3 {
    public static void main(String[] args) {
        AbstractApplicationContext act= new ClassPathXmlApplicationContext("applicationContext.xml");
        ListDao listDao = (ListDao) act.getBean("ilistdao");
        String SQL = "SELECT TOP 10 MB001,MB002,CASE WHEN B.MB025='M' THEN '自制件' WHEN B.MB025='S' THEN '委外件' WHEN B.MB025='P' THEN '采购件' ELSE B.MB025 END " +
                     "FROM INVMB B " +
                     "WHERE MB001 LIKE ? ";
        Object[] params = new Object[]{"5%"};
        List<List<Object>> data = null;
        
        Session session = HibernateSessionFactory.getSession();
        try {
            SQLQuery query = (SQLQuery) session.createSQLQuery(SQL).setResultTransformer(Transformers.TO_LIST);
            for (int i = 0; i < params.length; i++) {
                query.setParameter(i, params[i]);
            }
            data = query.list();        
        } catch (RuntimeException ex) {
            ex.printStackTrace();
        } finally {
            HibernateSessionFactory.closeSession();
        }
        if(data!=null && data.size()>0){
            for(int i=0;i<data.size();i++){
                System.out.println("data="+data.get(i));
            }
        }
        System.out.println("END");
    }

}

得到的结果确是:
data=[5, 103122, 自制件]
data=[5, 111832, 自制件]
data=[5, 151312, 自制件]
data=[5, 132112, 自制件]
data=[5, 132012, 自制件]
data=[5, 301312, 自制件]
data=[5, 117232, 自制件]
data=[5, 150932, 自制件]
data=[5, 134322, 自制件]
data=[5, 141922, 自制件]
END

MB001这列只显示了第一个字符,这是为什么啊?

注:用HQL语句查询的结果是没问题的。
搜索更多相关主题的帖子: hibernate 数据库查询 
2014-08-12 11:29
aa842751029
Rank: 2
等 级:论坛游民
帖 子:7
专家分:12
注 册:2014-8-19
得分:0 












www.

北京网站公司--建站送980元主机  QQ:842751029
2014-08-26 11:31



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-434929-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.276427 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved