hibernate hql отличается между WITH и WHERE - PullRequest
2 голосов
/ 28 апреля 2011

Привет, ребята: Я просто изучаю HQL

Может ли кто-нибудь объяснить или предоставить несколько ссылок о различиях между WITH и WHERE в HQL?

от http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html

пример как:

от кошки как кошки оставил присоединиться к cat.kittens как котенок с kitten.bodyWeight> 10,0

Могу ли я заменить на на , где ?

1020 * ТНХ *

Ответы [ 2 ]

3 голосов
/ 28 апреля 2011

With используется для «предоставления дополнительных условий объединения», что означает, что оно добавляется в объединение, а не в предложение where:

from Cat as cat 
  left join cat.kittens as kitten 
  with kitten.bodyWeight > 10.0

будет преобразовано во что-то подобное;1005 *

from Cat as cat
  left outer join Cat as kitten
    on cat.id = kitten.mother_id 
      and kitten.bodyWeight > 10.0

в то время как это

from Cat as cat 
  left join cat.kittens as kitten 
where kitten.bodyWeight > 10.0

переводится в

from Cat as cat
  left outer join Cat as kitten
    on cat.id = kitten.mother_id 
where
  kitten.bodyWeight > 10.0
1 голос
/ 28 апреля 2011

Замена "на" на "где" ограничивает результат котами, у которых есть котята с bodyWeight> 10.0.Использование «с» позволяет получить даже кошек без котят.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...