我正在查看Hibernate文档3.x,以便在Hibernate中使用视图:http://docs.jboss.org/hibernate/orm/3.3/reference/en-US/html/mapping.html#mapping-declaration-class
该文件说:
有时您想要使用视图,但无法在视图中创建视图 数据库(即具有传统模式)。在这种情况下,您可以映射一个 给定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>
请您帮我理解一下,Summary文件的Java文件是什么样的?当我们需要在类标签中使用synchronize标签时,它的目的是什么?
以下声明的含义是什么:
声明表以同步此实体,确保这样做 自动刷新正确发生,并查询派生的 实体不返回陈旧数据。它可以作为 一个属性和一个嵌套的映射元素。
答案 0 :(得分:0)
您可以像普通类一样映射,如下所示:
<class name="Summary">
<subselect>
select item.name, max(bid.amount) as amount, count(*) as qtt
from item
join bid on bid.item_id = item.id
group by item.name
</subselect>
<synchronize table="item"/>
<synchronize table="bid"/>
<id name="name" column="name" type="java.lang.String"/>
<property name="amount" column="amount" type="java.lang.Double" />
<properyt name="qty" column="qty" type="java.lang.Integer" />
然后定义类
public class Summary{
private String name;
private Double amount;
private Integer qty;
//...setter/getter
}