hibernate hql里可以new对象.

本文详细介绍了如何使用Hibernate的Stringhql进行SQL查询,并将查询结果映射到自定义实体类MyUser中,同时展示了如何在多实体查询场景下进行复杂的条件过滤和结果映射,包括SettleModeldocHead、SettleARModelarItem等模型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
String hql = " select new  com.domain.MyUser(name,passwd) from Users";     
Query query = session.createQuery(hql);    //默认查询出来的list里存放的是一个Object数组,但是在这里list里存放的不再是默认的Object数组了,而是MyUser对象了         
List myUsers = query.list();            
for(MyUser myUser : myUsers){                 
	String name = myUser.getUsername();      
	String passwd = myUser.getPassword();       
	System.out.println(name + " : " + passwd);       
	}  

 
// 如果是多个实体,需写上对应的别名

public CommissionArDetailQueryResult findCommDetailHeadInfo(SettleModel  docHead,SettleARModel arItem){
		String hql=
			"select distinct new com.coscon.cbs.domain.model.test.CommissionArDetailQueryResult"
			+"( commBl.billReferenceCode,commBl.companyCode,bizInfo.cargoTradeLaneCode,bizInfo.porUuid,shmtCntr.outBoundDoorCyIndicator " 
			+",shmtCntr.inboundDoorCyIndicator,bizInfo.fndUuid,bizInfo.firstLoadingSvvdId,bizInfo.firstPodCode,bizInfo.firstBaseLoadingSvvdId " 
			+",bizInfo.firstBasePolCode,bizInfo.lastBaseLoadingSvvdId,bizInfo.lastBasePodCode,bizInfo.lastLoadingSvvdId,bizInfo.lastPodCode ) "
			+
			" from " 
			    +" com.coscon.cbs.domain.model.test.SettleModel  docHead, " 
			    +" com.coscon.cbs.domain.model.test.CbsSettlementBusinessInformation  bizInfo ," 
				+" com.coscon.cbs.domain.model.test.CbsCommissionBill commBl ," 
				+" com.coscon.cbs.domain.model.test.SettleARModel arItem,"  
				+" com.coscon.cbs.domain.model.test.CbsCommissionContainer commCntr," 
				+" com.coscon.cbs.domain.model.test.CbsShipmentContainerPackageInformation shmtCntr " 
				+
			" where " 
				+ " bizInfo.businessReferenceUuid = "+docHead.getBizRefUuid() 
				+ " and commBl.billBasicUuid= "+docHead.getBizRefUuid() 
				+ " and commBl.companyCode = "+docHead.getCompanyCde()
				+ " and commBl.commissionMode = "+arItem.getChrgCdeGrp()
				+ " and commBl.commissionType = "+arItem.getChrgCde()
				+ " and commBl.companyCode = commCntr.companyCode " 
				+ " and commBl.commissionMode = commCntr.commissionMode " 
				+ " and commBl.agencyCode = commCntr.agencyCode "
				+ " and commBl.billBasicUuid = commCntr.billBasicUuid " 
				+ " and shmtCntr.shipmentContainerPackageUuid = commCntr.shipmentContainerPackageUuid " ;
		CommissionArDetailQueryResult queryResult = (CommissionArDetailQueryResult) cbsModuleRepository.getSessionFactory().getCurrentSession().createQuery(hql).list().get(0);
		return queryResult;
	}
String sql = "select test1,test2 from Test1 test1,Test2 test2"; 
	List list =  session.find(sql); 
	for(int i=0;i<list.size();i++) 
	{ 
	    Object[] obj = (Object[])list.get(i); 
	    Test1 t1 = (Test1)obj[0]; 
	    Test2 t2 = (Test2)obj[1]; 
	}


 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值