2013-09-24 3 views
0

Я новичок в hibernate. Возникли проблемы с созданием объекта критериев запроса sql ниже. Не могли бы вы привести меня?SQL Query to Hibernate Criteria

SELECT P1.*,O1.PROJECT_OID FROM POINTALL P1 
LEFT JOIN 
OPERATION_PLAN O1 
ON P1.OID = O1.GEOVISION_POINT_OID; 

ответ

0

Вам не нужно создавать критерии. Вы можете выполнять собственные SQL-запросы или даже писать один и тот же запрос в HQL, который очень похож на SQL.

+0

Я отдаю себе отчет в HQL, но мне нужно будет добавить ограничения динамически. это моя проблема –

+0

Если эти два объекта связаны (или сопоставлены), то вы можете сделать это с помощью критериев, по-прежнему использующих HQL. –

1

Если 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); 
+0

, то я получаю следующее исключение: org.hibernate.QueryException: не удалось разрешить свойство: OPERATION_PLAN of: com.blabla.PointAll –

+0

Получите точное имя, указанное вами в компоненте PointAll для 'OPERATION_PLAN' – commit

+0

pointAll - это вид и операцияPlan представляет собой таблицу. единственное отношение между ними - pointOid. поэтому никакого отношения к операцииPlan в pointAll нет. –