我正在使用Struts + Spring + Hibernate,並且無法正常執行我的HQL。內部連接處於休眠狀態(HQL)的問題
我有四個對象,objectA,objectB,objectC和objectD。對象A與對象B具有一對多關係,並且它們與ObjectB具有FK ObjectA.Id相關。這種模式繼續通過對象,即對象B與對象C有一對多關係等。
我現在正在做的是調用「FROM ObjectXVO WHERE objectXId =?」獲取對象列表。我的應用程序變得越來越複雜,所以我需要做一些更復雜的HQL。
基本上我需要的是,給定ObjectBVO.objectBId我需要返回給定ObjectB的ObjectA的某些列,給定ObjectB的一部分的ObjectC的某些列以及ObjectDs的所有列作爲給定ObjectBs的一部分的ObjectC的一部分。
這是我在Microsoft SQL Server中使用的SQL語句。這是工作,並希望將展示我的模型。
SELECT ObjectB.ObjectBID, ObjectB.ObjectBName, ObjectC.ObjectCDescription,
ObjectD.*, ObjectA.ObjectAID
FROM ObjectB, ObjectC, ObjectD, ObjectA
WHERE ObjectB.ObjectBID = 2
AND ObjectA.ObjectAID = ObjectB.ObjectAID
AND ObjectB.ObjectBID = ObjectC.ObjectBID
AND ObjectD.ObjectCID = ObjectC.ObjectCID
這是DAOimpl代碼對象,我嘗試使用返回列表< ObjectDVO>
List<ObjectDVO> objectDs;
try{
String hql = "SELECT ObjectBVO.objectBId, ObjectBVO.objectBName,
ObjectCVO.objectCDescription, ObjectCVO.objectCId,"
+" ObjectAVO.objectAId, ObjectAVO.objectAName, ObjectDVO"
+" FROM ObjectBVO, ObjectAVO, ObjectCVO, ObjectDVO"
+" WHERE ObjectBVO.objectBId = ?"
+" AND ObjectAVO.objectAId = ObjectBVO.objectAId"
+" AND ObjectBVO.objectBId = ObjectCVO.objectBId"
+" AND ObjectDVO.objectCId = ObjectCVO.objectCId";
objectDs = getHibernateTemplate().find(hql, objectBID);
}
這只是拋出一個錯誤說空。我已經看過HQL文檔和一些教程,但不清楚如何做更多的VO對象。誰能幫忙?謝謝。
感謝您的好評!我會試試這個,並將其標記爲已回答,如果我可以得到它的工作。 – user1287523 2012-07-27 14:47:27
作品非常漂亮 – user1287523 2012-07-27 16:00:11