使用 JPA2 标准 API 选择最大时间戳

所以我的实体有:

@Column(name="TS", nullable=false)
private java.sql.Timestamp timestamp; 

我生成的元模型具有:

public static volatile SingularAttribute<MyEntity,Timestamp> timestamp;

我想通过最大时间戳值进行选择:

Root<MyEntity> root = query.from(MyEntity.class);
Expression maxExpression = cb.max(root.get(MyEntity_.timestamp));

但我不被允许,因为:

max(Expression<N> x)创建应用数值最大值运算的聚合表达式。 表达<N extends java.lang.Number>

当然不会扩展。TimestampNumber

如何使用类型安全标准 API 对列执行 a 操作?MAXTimestamp


答案 1

对于时间戳(以及日期,字符串和其他可比性),应该使用 CriteriaBuilder.great,而不是 max。如果您需要时间戳的最小值,请改用最少方法

类似的问题可以通过较少/更大/相等的比较来面对。Firs一个接受扩展Number的参数,第二个参数是其他可比性:


答案 2

推荐