我有多个包含大量数据的表。我只提到与问题有关的事情。为了在jsp上渲染数据,我只需要来自不同表的选择性数据。
在参考旅行假期时,假设我必须检索并呈现假日套餐名称,行程持续时间和每个默认值的总价格。
HolidayPackage
(ID,名称)Itinerary
(idPkg,idItinerary,dayNum)=(给定包裹的行程行的SUM聚合)
=(总和(基数(idPkg)+总数(idPkg)))
我正在使用Hibernate和mysql作为我的数据库。
思想:
我可以使用视图将数据提取到我的自定义java对象Result中,其中Result定义为:
class Result{
String name;
Intger itineraryDuration;
BigDecimal totalPrice;
}
另外,我可以使用函数作为视图中列值的定义吗?
答案 0 :(得分:1)
我对视图的处理是创建一个不可变的hibernate模型类和相关的DAO来查询模型类。
我按如下方式注释模型类:
@Entity
@Immutable
@Table(name = "CLASSIFICATION_LABELS_V", schema = "CORPORATE")
我还将setter设置为protected,但这是可选的。
如果视图的结构类似于现有模型类,则可以使用命名查询并使用resultClass属性将其映射到模型。以下是针对Oracle的,所以如果使用其他任何东西,查询参数会有所不同。
@NamedNativeQueries({
@NamedNativeQuery(name = "create_product_from_template", query = "call pkg_authoring.sp_create_prod_from_template(?, :productId, :templateId)", resultClass = TblProduct.class, callable = true)
})
在休眠状态下,您可以使用以下函数:
@Formula(value = "(select fnHasProducts(customerId) from dual)")
@AccessType("property")
private Integer products = 0;
@Formula(value = "(select fnAssigneeForProduct(productId) from dual)")
private Integer assignee = 0;