0

hibernate セクション 5.1.3の最後の例には、パラメーターを渡す例が示されていません。

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>

出来ますか?もしそうなら、どのように?

ありがとう、フランツ

4

3 に答える 3

1

マッピングファイルは静的な記述のようなものなので、それは不可能だと思います。

于 2009-08-10T08:49:26.760 に答える
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;
}

この例はAnnotatedプロパティを使用していますが、マッピングファイルでも同じことができます。

于 2009-12-22T16:28:14.657 に答える
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" /> 

于 2011-04-01T17:53:28.103 に答える