假设我有一个具有数量字段和价格字段的持久类项目。 有没有办法建立一个计算数量和价格总和的标准?
答案 0 :(得分:9)
我认为你也可以使用SQL投影。它应该是这样的:
session.createCriteria(Item.class)
.createAlias("item", "i")
.setProjection( Projections.projectionList()
.add( Projections.groupProperty("i.id") )
.add( Projections.groupProperty("i.price") )
.add( Projections.groupProperty("i.quantity") )
.add( Projections.sqlProjection(
"price * quantity as total",
new String[] { "total" },
new Type[] { Hibernate.DOUBLE }
)
)
);
大利
答案 1 :(得分:1)
这并不是你要求的,但你可以使用“派生属性”来获得相似的东西。
例如,您可以将totalPrice属性映射到SQL表达式:
<property name="totalPrice" formula="quantity * price" type="big_decimal"/>
每次从数据库中检索实体时,都会评估SQL公式“quantity * price”。
大利
Hibernate docs包含有关此内容的更多信息。
答案 2 :(得分:1)
使用Criteria(可能)不可能做到这一点。但HQL可能对此有所帮助。
SELECT ent.quantity*ent.price from EntityName as ent WHERE ent.id = ?