java - type - Usar suma() en los criterios de hibernación
jpa sql (3)
Proyecciones es la palabra clave para usar funciones agregadas con criterios de hibneración.
roseindia tiene un pequeño ejemplo para implementar una consulta SELECT SUM(...)
. Se ve bastante cerca de tu problema.
Aquí hay otro tema del foro que incluye un ejemplo de trabajo para una expresión SUM(col1 * col2)
y el póster original tenía problemas similares con excepciones anteriores.
¿Cómo puedo escribir la consulta sql select sum(amount * direction) from transactions
en criterios de hibernación?
Creo que lo que necesitas es fórmula. Algo como esto,
@Entity
@Table(''TRANSACTIONS'')
Class transactions {
@Column("AMOUNT")
private double amount;
@Column("DIRECTION")
private double direction;
@Formula("AMOUNT * DIRECTION")
private double multiplication;
}
Y agrega una columna de multiplicación a tu lista de proyección.
Creo que encontré la respuesta. Debe usar Projection.sqlProjection () y no Projections.sum (). Ejemplo:
.setProjection(Projections.sqlProjection("sum(cast(amount as signed)* direction) as amntDir", new String[] {"amntDir"} , new Type[] {Hibernate.DOUBLE}));