2009-08-10 61 views
0

hibernate section 5.1.3末尾的示例沒有顯示傳遞參數的示例。如何將參數傳遞給Hibernate的子選擇標記?

對於Hibernate 映射,視圖 和基表之間沒有區別。這在數據庫級別爲 處是透明的,儘管一些DBMS做 不正確支持視圖,尤其是 更新。有時,您想要 使用視圖,但不能在數據庫中創建一個 (即使用傳統的 模式)。在這種情況下,你可以映射一個不可變 和只讀的實體到一個給定的 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> 

這可能嗎?如果是這樣,怎麼樣?

感謝, 弗朗茨

回答

1

我不認爲這是可能的,因爲映射文件就像是一個靜態的描述。

0

由於Hibernate 3可以使用公式來映射這種類型的只讀計算字段。例如:

@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; 
} 

這個例子是一個註釋屬性,但你可以做同樣的映射文件。

0

在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" /> 

相關問題