Seleccione la marca de tiempo MÁXIMA con la API de criterios JPA2
Así que mi entidad tiene:
@Column(name="TS", nullable=false)
private java.sql.Timestamp timestamp;
Mi metamodelo generado tiene:
public static volatile SingularAttribute<MyEntity,Timestamp> timestamp;
Quiero seleccionar por el valor Máximo de marca de tiempo:
Root<MyEntity> root = query.from(MyEntity.class);
Expression maxExpression = cb.max(root.get(MyEntity_.timestamp));
Pero no se me permite porque:
max(Expression<N> x)
Cree una expresión agregada aplicando la operación numérica máxima.<N extends java.lang.Number>
Expresión
Por supuesto, Timestamp
no se extiende Number
.
¿Cómo puedo hacer un MAX
en una columna Timestamp
usando la API de Criterios typesafe ?
Gracias.
1 answers
En lugar de max tienes que usar CriteriaBuilder.greatest para la marca de tiempo (y para la Fecha, Cadena y otros Comparables también). Y si alguna vez necesita MIN para la marca de tiempo, use el método menos en su lugar
Un problema similar puede ser enfrentado con comparaciones menos/mayores/iguales. El primero acepta el argumento que extiende el Número, el segundo es para otros comparables:
- lt vs lessThan
- le vs lessThanOrEqualTo
- ge vs Mayor que el equivalente
- gt vs. greaterThan
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-19 05:46:45