@Override public <T extends Number & Comparable<T>> Path<T> createNumberPath(Class<T> type, PathMetadata<?> metadata) { return new NumberPath<T>(type, metadata); }
@SuppressWarnings("unchecked") public static <D extends Number & Comparable<D>> NumberPath<D> var(D arg) { return new NumberPath<D>((Class)arg.getClass(), "var" + arg.getClass().getSimpleName()+arg); }
/** * Create a new Path expression * * @param type * @param parent * @param property * @return */ public static <T extends Number & Comparable<?>> NumberPath<T> numberPath(Class<T> type, Path<?> parent, String property) { return new NumberPath<T>(type, PathMetadataFactory.forProperty(parent, property)); }
/** * Create a new Path expression * * @param type * @param variable * @return */ public static <T extends Number & Comparable<?>> NumberPath<T> numberPath(Class<T> type, String variable) { return new NumberPath<T>(type, PathMetadataFactory.forVariable(variable)); }
private <D extends Number & Comparable<?>> NumberPath<D> var(Class<D> cl) { return new NumberPath<D>(cl, "var"); }
/** * Create a new Number path * * @param <A> * @param property * @param type * @return */ @SuppressWarnings("unchecked") protected <A extends Number & Comparable<?>> NumberPath<A> createNumber(String property, Class<? super A> type) { return add(new NumberPath<A>((Class) type, forProperty(property))); }
@Test public void In() { JPQLSerializer serializer = new JPQLSerializer(HQLTemplates.DEFAULT); serializer.handle(new NumberPath<Integer>(Integer.class, "id").in(Arrays.asList(1, 2))); assertEquals("id in (?1)", serializer.toString()); }
@Test public void Not_In() { JPQLSerializer serializer = new JPQLSerializer(HQLTemplates.DEFAULT); serializer.handle(new NumberPath<Integer>(Integer.class, "id").notIn(Arrays.asList(1, 2))); assertEquals("id not in (?1)", serializer.toString()); }
@Test public void NormalizeNumericArgs() { JPQLSerializer serializer = new JPQLSerializer(HQLTemplates.DEFAULT); NumberPath<Double> doublePath = new NumberPath<Double>(Double.class, "doublePath"); serializer.handle(doublePath.add(1)); serializer.handle(doublePath.between((float)1.0, 1l)); serializer.handle(doublePath.lt((byte)1)); for (Object constant : serializer.getConstantToLabel().keySet()) { assertEquals(Double.class, constant.getClass()); } }
@Test public void Order() { NumberPath<Double> weight = new NumberPath<Double>(Double.class, "weight"); query().from(cat).orderBy(weight.asc()).list(cat.bodyWeight.as(weight)); }