0

我有多个表,其中包含大量数据。我只提到与问题相关的事情。对于在jsp上呈现数据,我只需要来自不同表的选择性数据。

关于 travel-vacation,假设我必须检索并呈现假期套餐名称、行程持续时间和每个默认值的总价。

  • 假日套餐名称在表中HolidayPackage(id,name)
  • 行程表中的行程持续时间 Itinerary Itinerary(idPkg, idItinerary, dayNum) = (给定包裹的行程行总和)
  • 价格在两个不同的表中定义基价和总价

    =(总和(基数(idPkg)+总计(idPkg)))

如何从这些数据库表中检索选择性数据以呈现给定假日套餐的名称、行程持续时间和总价?

我使用 Hibernate 和 mysql 作为我的数据库。

想法:

我可以使用视图将数据提取到我的自定义 java 对象 Result 中,其中 Result 定义为:

class Result{
 String name;
 Intger itineraryDuration;
 BigDecimal totalPrice;
}

另外,我可以使用函数作为视图中列值的定义吗?

4

1 回答 1

1

我对视图所做的是创建一个不可变的休眠模型类和关联的 DAO 来查询模型类。

我将模型类注释如下:

@Entity
@Immutable
@Table(name = "CLASSIFICATION_LABELS_V", schema = "CORPORATE")

我还将设置器设置为受保护,但这是可选的。

如果视图的结构类似于现有模型类,您可以使用命名查询并使用 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)
})

在hibernate中,你可以使用如下函数:

@Formula(value = "(select fnHasProducts(customerId) from dual)")
    @AccessType("property")
    private Integer products = 0;

@Formula(value = "(select fnAssigneeForProduct(productId) from dual)")
    private Integer assignee = 0;
于 2012-05-16T14:26:16.473 回答