| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 544 人关注过本帖
标题:hibernate 的 sql 查询
取消只看楼主 加入收藏
z060831
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2013-8-3
结帖率:50%
收藏
 问题点数:0 回复次数:0 
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
快速回复:hibernate 的 sql 查询
数据加载中...
 
   



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

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