我是新的休眠實際上。有問題創建下面的SQL查詢的標準對象。你願意帶領我嗎?SQL查詢到休眠標準
SELECT P1.*,O1.PROJECT_OID FROM POINTALL P1
LEFT JOIN
OPERATION_PLAN O1
ON P1.OID = O1.GEOVISION_POINT_OID;
我是新的休眠實際上。有問題創建下面的SQL查詢的標準對象。你願意帶領我嗎?SQL查詢到休眠標準
SELECT P1.*,O1.PROJECT_OID FROM POINTALL P1
LEFT JOIN
OPERATION_PLAN O1
ON P1.OID = O1.GEOVISION_POINT_OID;
您不需要創建條件。您可以執行原生SQL查詢,甚至可以在與SQL非常相似的HQL中編寫相同的查詢。
如果您POINTALL和OPERATION_PLAN表比唯一的標準將致力於以其它方式使用HQL或SQL映射。
這就是你需要創建
Criteria criteria = getSession().createCriteria(POINTALL.class,"P1");
ProjectionList projections = Projections.projectionList();
projections.add(Projections.property("P1.something"),"aliasName");
projections.add(Projections.property("P1.something"),"aliasName");
..
projections.add(Projections.property("O1.PROJECT_OID"),"PROJECT_OID");
criteria.createAlias("P1.OPERATION_PLAN","O1", Criteria.LEFT_JOIN);
criteria.setProjection(projections);
然後我得到以下異常:org.hibernate.QueryException:無法解析屬性:OPERATION_PLAN of:com.blabla.PointAll –
獲得您在PointAll bean中爲'OPERATION_PLAN'指定的確切名稱。 – commit
pointAll是一個視圖和operationPlan是一張桌子。它們之間的唯一關係是pointOid。所以與pointAll中的operationPlan沒有任何關係。 –
我知道HQL,但我需要動態地添加限制。那是我的問題 –
如果這兩個實體是相關的(或映射),那麼你可以通過標準來做到這一點,HQL就是這樣。 –