根据Hibernate文档,对于Hibernate映射,视图和基本表没有区别。虽然在数据库级别上透明,但某些DBMS不支持视图,特别是更新操作。有时您想使用视图,但无法在数据库中创建视图(即具有遗留架构)。在这种情况下,您可以使用@org.hibernate.annotations.Subselect将不可变且只读的实体映射到给定的SQL子选择表达式。
声明要与此实体同步的表,确保自动刷新正确,并且针对派生实体的查询不会返回过期数据。Synchronize注释可作为属性和嵌套映射元素使用。我对这里提供的Synchronize注释陈述不够清楚。自动刷新存在什么问题?这里的派生实体是什么,我们为什么会得到过期数据?如何使用Synchronize注释解决这个问题,请有人帮助我理解。
@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; }
...
}
声明要与此实体同步的表,确保自动刷新正确,并且针对派生实体的查询不会返回过期数据。Synchronize注释可作为属性和嵌套映射元素使用。我对这里提供的Synchronize注释陈述不够清楚。自动刷新存在什么问题?这里的派生实体是什么,我们为什么会得到过期数据?如何使用Synchronize注释解决这个问题,请有人帮助我理解。