/** * Create a new Comparable typed path * * @param <A> * @param path existing path * @return property path */ @SuppressWarnings("unchecked") public <A extends Comparable<?>> ComparablePath<A> get(ComparablePath<A> path) { ComparablePath<A> newPath = getComparable(toString(path), (Class<A>) path.getType()); return addMetadataOf(newPath, path); }
@Test public void various() { PathBuilder<User> entity = new PathBuilder<User>(User.class, "entity"); entity.getBoolean("boolean"); entity.getCollection("col", User.class); entity.getComparable("comparable", Comparable.class); entity.getDate("date", Date.class); entity.getDateTime("dateTime", Date.class); entity.getList("list", User.class); entity.getMap("map", String.class, User.class); entity.getNumber("number", Integer.class); entity.getSet("set", User.class); entity.getSimple("simple", Object.class); entity.getString("string"); entity.getTime("time", Time.class); }
/** * Create a new Comparable typed path * * @param <A> * @param path existing path * @return property path */ @SuppressWarnings("unchecked") public <A extends Comparable<?>> ComparablePath<A> get(ComparablePath<A> path) { ComparablePath<A> newPath = getComparable(toString(path), (Class<A>) path.getType()); return addMetadataOf(newPath, path); }
/** * @param query the {@link JPAQuery} to apply the {@link Sort} to. * @param sort the {@link Sort} to apply as ORDER BY to the given {@link JPAQuery}. */ @SuppressWarnings("rawtypes") protected void applySort(JPAQuery<?> query, Sort sort) { if (sort == null) { return; } PathBuilder<?> alias = findAlias(query); for (Order order : sort) { String property = order.getProperty(); Direction direction = order.getDirection(); ComparablePath<Comparable> path = alias.getComparable(property, Comparable.class); OrderSpecifier<Comparable> orderSpecifier; if (direction == Direction.ASC) { orderSpecifier = path.asc(); } else { orderSpecifier = path.desc(); } query.orderBy(orderSpecifier); } }