글쎄... max를 criteria방식으로 구현하기 위해 고민하고있고 이글을 본다면 도움이 될듯..
public Short getMaxOrder(Long Id) {
CriteriaBuilder builder = entityManager.getCriteriaBuilder();
CriteriaQuery<Short> criteria = builder.createQuery(Short.class);
Root<EstimateDetail> root = criteria.from(EstimateDetail.class);
Join<EstimateDetail,Estimate> jEstimate = root.join("estimate");
criteria.where(builder.equal(jEstimate.get("id"), estimateId));
criteria.select(builder.<Short>max(root.<Short>get("order"))); //point^^
TypedQuery<Short> tq = entityManager.createQuery(criteria);
Short result = tq.getSingleResult();
return result;
}