如何使用Hibernate映射具有多个实体的视图?
此致, chaitu
此致, chaitu
Hibernate映射中视图和基本表没有区别。这在数据库层面上是透明的,尽管有些DBMS无法正确支持视图,特别是更新操作。有时您想使用视图,但无法在数据库中创建视图(例如具有传统模式的情况)。
http://docs.jboss.org/hibernate/core/3.5/reference/en/html/mapping.html#mapping-declaration-class
还有一个使用XML实现的示例。
子查询是您的自然选择。这里有一个可行的例子:假设我们在DBMS中有一个名为“view1”的视图。您不需要其他任何东西,尽管如果视图不可更新,则使用@Immutable对于性能问题会很好。请注意,您必须在类和视图中都有一个id列。
@Entity
@Subselect("select * from view1")
public class EventView {
@Id @GeneratedValue
private int id;
@Entity
@Subselect("select item.name, max(bid.amount), count(*) "
+ "from item "
+ "join bid on bid.item_id = item.id "
+ "group by item.name")
@Synchronize( {"item", "bid"} ) //tables impacted
public class Summary {
@Id
public String getId() { return id; }
...
}