Итак, следующий запрос:Hibernate Criteria - как ограничить результаты объединений одним типом объекта?
SELECT O.*, P.* FROM ORDERS O, PRODUCT P WHERE
O.ORDER_ID=P.ORDER_ID AND P.ID=’1234’;
можно сделать с помощью критериев следующим образом:
List ordersAndProducts = session.createCriteria(Order.class)
.setFetchMode(“products”,FetchMode.JOIN)
.add(Restrictions.eq(“id”,”1234”))
.list();
но здесь Criteria.list()
возвращает List<Object[]>
где Object[0]
является Order
и Object[1]
является Product
для каждого элемента в списке.
Но как я могу сделать следующий SQL с критериями:
SELECT O.* FROM ORDERS O, PRODUCT P WHERE
O.ORDER_ID=P.ORDER_ID AND P.ID=’1234’;
Другими словами, я хочу Criteria.list()
дать мне List<Order>
, я не забочусь о Products
. Я пробовал использовать createAlias()
вместо setFetchMode()
, но результаты те же, и Projections не позволяют указать объект, только свойство.
Спасибо! Я подозревал, что использование ResultTransformer было бы таким, но довольно непрозрачная документация не помогла определить, какой из них использовать. – mluisbrown 2010-12-07 15:33:37
хороший ответ (geht doch ... :-)) – 2010-12-08 14:08:47