使用Hibernate如何解决这样的场景呢!
一个订单系统,使用Hibernate来建模就会包含Order、OrderItem、Product这么几种类型,其中OrderItem包含一个Amount属性和一个Product实例的引用。
用户常常提出这样的需求:给出订单号(OrderNumber)查找订单,列表显示明细,明细包括产品名称、单价、数量。
我就在OrderItem的映射文件里面加入这样几句
<property name="ProductName">
<formula>( select Name from Product p where p.productId = productId)
</formula>
</property>
<property name="ProductPrice">
<formula>( select Price from Product p where p.productId = productId )
</formula>
</property>
只是这样一来,生成的SQL语句就成了
select
...,
...,
...,
(select Name from Product p where p.productId = productId) as ProductName,
(select Price from Product p where p.productId = productId) as ProductPrice
from OrderItems
where ......
这显然是效率低下的语句。
请教高人,有没有什么更好的办法,既能够获得Hibernate的便利,又不至于性能太低下呢。