使用Hibernate的视图

时间:2013-10-22 20:43:41

标签: java hibernate

我正在查看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标签时,它的目的是什么?

以下声明的含义是什么:

  

声明表以同步此实体,确保这样做   自动刷新正确发生,并查询派生的   实体不返回陈旧数据。它可以作为   一个属性和一个嵌套的映射元素。

1 个答案:

答案 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
}