2012-05-16 66 views
0

我有许多数据在其中的多个表。我只提到与问题有关的事情。为了在jsp上呈现数据,我只需要来自不同表格的选择性数据。如何使用hibernate从数据库中获取数据时过滤数据?

在参考旅游度假时,可以说我必须检索并呈现假日包名,行程持续时间和每个默认的总价格。

  • 假日包名称在表HolidayPackage(ID,姓名)
  • 在表行程Itinerary(idPkg,idItinerary,daynum在)行程持续时间=(对于给定的包行程的行的SUM聚合)
  • 价格以两个不同的表基价和总价定义

    =(萨姆(碱(idPkg)+总(idPkg)))

如何从这些数据库表中检索选择性数据来呈现给定假期包的名称,行程持续时间和总价格?

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

思考:

我可以用一个视图的数据读取到我的自定义Java对象result结果定义,其中为:

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

而且,我可以使用的功能定义视图中的列值?

回答

1

我如何处理视图是我创建了一个不可变的hibernate模型类和关联的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; 
相关问题