Hibernate 關聯查詢返回組合的Bean,而不是返回Object[]

目的:hibernate 多張表關聯查詢,用到了原生的sql,那麼用到SQLQuery,返回的是Object[],如果字段太多,在後期維護上很不方便(obj[0],obj[1],,,,),爲了維護方便,就改成自定義實體;代碼如下:

StringBuffer sql = new StringBuffer();
		sql.append(" select cust.CM_Code " );
           ...(這裏放需要反回的字段)	    

		sql.append(" from 	表1 cos ");
		sql.append(" LEFT JOIN 表2 ord ON (cos.CO_ID = ord.CO_ID) " );
		sql.append(" inner join 表3 cust on (ord.CM_ID = cust.CM_ID) " );
		sql.append(" inner join 表4 country on (ord.CT_Code_Destination = country.CT_Code) " );
		sql.append(" inner join 表5 ordattach on (ord.CO_ID = ordattach.CO_ID) " );
		sql.append(" where 1 = 1 ");
		
		
		
		//Set query parameter
		Session session = super.getSession();
		SQLQuery query = session.createSQLQuery(sql.toString());
           query.setParameter("queryOrderNo", “123456”);
               ...(這裏放字段對應的參數)

		   query.addScalar("CM_Code",StandardBasicTypes.STRING);
                ... (這裏放返回的數據類型)		      

		   query.setResultTransformer(Transformers.aliasToBean(javaBean.class));
		//Set query return
		List<CustomerOrderForecastDTO> returnList = query.list();

簡化後的代碼入上,僅僅作參考,需要耐心看完才能懂..

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章