Как пользоваться Hibernate <subselect>: - PullRequest
6 голосов
/ 12 мая 2011

Я новичок в спящем режиме.Мне нужно понять следующие вопросы:

(1) Что такое подвыбор в отображении гибернации?

(2) Как отобразить подвыбор в файле hbm?

(3)Если я получаю значения, используя подвыбор, то как получить полученные значения в классе действий Java.

Ответы [ 2 ]

7 голосов
/ 24 августа 2011
  1. На основе описания, приведенного в разделе 5.1.3 , элемент subselect используется для определения неизменяемой / неизменяемой сущности, которая основана на результатах произвольного собственного запроса..
  2. Из того же источника можно просто использовать subselect в элементе class вместо атрибута table, а затем использовать имена столбцов, определенные в запросе, в качестве имен столбцов в свойстве.отображение.( следующее взято дословно из раздела 5.1.3 )

    <class name="Summary">
      <subselect>
        select item.name, max(bid.amount), count(*)
        from item
        join bid on bid.item_id = item.id
        group by item.name
      </subselect>
      <synchronize table="item"/>
      <synchronize table="bid"/>
      <id name="name"/>
      ...
    </class>
    
  3. После создания сопоставления с использованием столбцов из запроса в элементе subselect,вы должны иметь возможность доступа к свойствам так же, как и для любой другой сущности.

2 голосов
/ 12 мая 2011

На самом деле вам не нужно моделировать подвыборы, вы можете создавать запросы, которые их используют.Проверьте: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html#queryhql-subqueries

(Изменить: пример по ссылке выше)

String hql = "from Cat as fatcat "+
             "where fatcat.weight > ( "+
             "  select avg(cat.weight) from DomesticCat cat "+
             ")";
List fatcats = session.createQuery(hql);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...