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语句查询的结果是没问题的。