使用JPA2 Criteria API选择MAX时间戳
所以我的实体有:
@Column(name="TS", nullable=false) private java.sql.Timestamp timestamp;
我生成的MetaModel具有:
public static volatile SingularAttribute timestamp;
我想通过Max Timestamp值选择:
Root root = query.from(MyEntity.class); Expression maxExpression = cb.max(root.get(MyEntity_.timestamp));
但我不被允许,因为:
max(Expression x)
使用数值max运算创建聚合表达式。Expression
当然Timestamp
不会扩展Number
。
如何使用typesafe Criteria API在Timestamp
列上执行MAX
?
谢谢。
而不是max,你必须使用CriteriaBuilder.greatest用于Timestamp(以及Date,String和其他可比对象)。 如果您需要MIN作为时间戳,那么请使用最少的方法
类似的问题可以通过更少/更多/相等的比较来面对。 第一个接受扩展Number的参数,第二个接受其他可比较的参数:
- LT vs. lessThan
- le vs. lessThanOrEqualTo
- ge vs. greaterThanOrEqualTo
- gt vs. greaterThan