@Override public <T> Path<T> createEntityPath(Class<T> type, PathMetadata<?> metadata) { if (Comparable.class.isAssignableFrom(type)) { return new ComparableEntityPath(type, metadata); } else { return new EntityPathBase<T>(type, metadata); } }
public static <T> List<T> findCustom(EntityManager em, Class<T> entityClass,Map<String,?> filters, String sort) { EntityPath<T> entityPath = new EntityPathBase<T>(entityClass, "entity"); BooleanBuilder builder = new BooleanBuilder(); for (Map.Entry<String, ?> entry : filters.entrySet()) { SimplePath<Object> property = new SimplePath<Object>(entry.getValue().getClass(), entityPath, entry.getKey()); builder.and(property.eq(entry.getValue())); } ComparablePath<?> sortProperty = new ComparablePath(Comparable.class, entityPath, sort); return new JPAQuery(em).from(entityPath).where(builder.getValue()).orderBy(sortProperty.asc()).list(entityPath); }
@SuppressWarnings("unchecked") @Override public Expression<?> visit(Path<?> expr, Context context) { final PathType pathType = expr.getMetadata().getPathType(); if (pathType == PathType.LISTVALUE_CONSTANT || pathType == PathType.LISTVALUE) { final String variable = expr.accept(ToStringVisitor.DEFAULT, TEMPLATE).replace('.', '_'); final EntityPath<?> replacement = new EntityPathBase(expr.getType(), variable); context.add(expr, replacement); return replacement; } else if (expr.getMetadata().getParent() != null) { Context c = new Context(); final Path<?> parent = (Path<?>) expr.getMetadata().getParent().accept(this, c); if (c.replace) { context.add(c); return replaceParent(expr, parent); } } return expr; }
@Test public void FromWithCustomEntityName() { JPQLSerializer serializer = new JPQLSerializer(HQLTemplates.DEFAULT); EntityPath<Location> entityPath = new EntityPathBase<Location>(Location.class, "entity"); QueryMetadata md = new DefaultQueryMetadata(); md.addJoin(JoinType.DEFAULT, entityPath); serializer.serialize(md, false, null); assertEquals("select entity\nfrom Location2 entity", serializer.toString()); }
@Override public Expression<?> visit(Path<?> expr, Context context) { if (expr.getMetadata().getPathType() == PathType.COLLECTION_ANY) { Path<?> parent = (Path<?>) expr.getMetadata().getParent().accept(this, context); expr = new PathImpl<Object>(expr.getType(), PathMetadataFactory.forCollectionAny(parent)); EntityPath<?> replacement = new EntityPathBase<Object>(expr.getType(), ExpressionUtils.createRootVariable(expr)); context.add(expr, replacement); return replacement; } else if (expr.getMetadata().getParent() != null) { Context c = new Context(); Path<?> parent = (Path<?>) expr.getMetadata().getParent().accept(this, c); if (c.replace) { context.add(c); return replaceParent(expr, parent); } } return expr; }