Как передать параметры в тег выбора Hibernate? - PullRequest
0 голосов
/ 10 августа 2009

Пример в конце раздела hibernate 5.1.3 не показывает пример передачи параметров.

Нет разницы между видом и базовый стол для Hibernate отображение. Это прозрачно на уровень базы данных, хотя некоторые СУБД не поддерживает взгляды должным образом, особенно с обновлениями. Иногда вы хотите использовать представление, но вы не можете создать его в базе данных (т.е. с наследием схемы). В этом случае вы можете отобразить неизменяемый и доступный только для чтения объект заданное выражение подвыбора SQL:

<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>

Возможно ли это? И если да, то как?

Спасибо, Franz

Ответы [ 3 ]

1 голос
/ 10 августа 2009

Не думаю, что это возможно, потому что файл сопоставления похож на статическое описание.

0 голосов
/ 01 апреля 2011

В NHibernate:

<class name="Blog" mutable="false"> 
<subselect> 
  SELECT Blog.Id, Blog.Author, Blog.Title, Comment.Comment 
  FROM Blog INNER JOIN Comment ON Blog.Id = Comment.Blog_id 
  WHERE Comment.LanguageId = :blogcomment.languageId 
</subselect> 
<id name="Id"> 
  <generator class="assigned" /> 
</id> 
<property name="Author" /> 
<property name="Title" /> 
<property name="Comment" /> 

0 голосов
/ 22 декабря 2009

Начиная с Hibernate 3, вы можете использовать формулы для отображения этого типа вычисляемых только для чтения полей. Пример: </p> <pre>@Formula("(SELECT b.BANK_NAME FROM " + " BANK_INFORMATION b, BILLING_AGENT_BANK ba " + " WHERE ba.CNPJ = COMPANY_CNPJ " + " AND b.BANK_ID = ba.BANK_ID)") public String getBankName() { return bankName; }

В этом примере используется свойство Annotated, но вы можете сделать то же самое в файле сопоставления.

...