2009-06-07 12 views

Respuesta

9

Creo que también puede usar una proyección de SQL. Debe ser algo así como:

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 } 
       ) 
      ) 
     ); 

Ori

+0

¿Puede usted por favor decir donde es la función que crea el total de? Esto solo crea el producto. – Victor

1

No es exactamente lo que pediste, pero puedes usar "propiedades derivadas" para obtener algo bastante similar.

Por ejemplo, puede asignar una propiedad TotalPrice a una expresión SQL:

<property name="totalPrice" formula="quantity * price" type="big_decimal"/> 

La fórmula SQL "cantidad * precio" se evalúa cada vez que la entidad se recupera de la base de datos.

Ori

La hibernación docs contienen más información sobre esto.

1

Es (probablemente) imposible hacerlo con Criteria. Pero HQL puede ser útil para esto.

SELECT ent.quantity*ent.price from EntityName as ent WHERE ent.id = ? 
Cuestiones relacionadas