0

我正在查看 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>

您能否帮助我理解这一点,摘要的 Java 文件是什么样的?当我们需要在类标签中使用同步标签时,它的目的是什么?

以下语句的含义是什么:

声明要与此实体同步的表,确保自动刷新正确发生并且针对派生实体的查询不会返回陈旧数据。既可以作为属性使用,也可以作为嵌套映射元素使用。

4

1 回答 1

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
}
于 2014-03-11T04:49:57.417 回答