hibernate section 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>
有可能吗?如果是这样,怎么样?
谢谢, 弗朗兹
答案 0 :(得分:1)
我不认为这是可能的,因为映射文件就像一个静态描述。
答案 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;
}
此示例带有Annotated属性,但您可以在映射文件中执行相同的操作。
答案 2 :(得分: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" />