@Override public String toString() { return createQuery(queryMixin.getMetadata().getWhere()).toString(); }
@SuppressWarnings("unchecked") @Override public <D, Q> Q createQuery(QueryLanguage<D, Q> queryLanguage, D definition) { if (queryLanguage == QueryLanguage.TUPLE || queryLanguage == QueryLanguage.GRAPH || queryLanguage == QueryLanguage.BOOLEAN) { if (logger.isDebugEnabled()) { QueryMetadata metadata = (QueryMetadata) definition; logger.debug(queryLanguage + " : " + metadata.getWhere().toString()); } QueryRDFVisitor visitor = new QueryRDFVisitor(this); return (Q) visitor.visit((QueryMetadata) definition, queryLanguage); } else { throw new UnsupportedOperationException(queryLanguage.toString()); } }
@SuppressWarnings("unchecked") @Override public Void visit(SubQueryExpression<?> expr, Void context) { for (Map.Entry<ParamExpression<?>, Object> entry : metadata.getParams().entrySet()) { expr.getMetadata().setParam((ParamExpression) entry.getKey(), entry.getValue()); } if (!operators.isEmpty() && operators.peek() == Ops.EXISTS) { handle(expr.getMetadata().getWhere()); } else { visit(expr.getMetadata(), QueryLanguage.TUPLE); } return null; }
@Override public String toString() { JDOQLSerializer serializer = new JDOQLSerializer(templates, entity); serializer.handle(metadata.getWhere()); return serializer.toString(); }
@Override public boolean equals(Object o) { if (o instanceof QueryMetadata) { QueryMetadata q = (QueryMetadata)o; return q.getFlags().equals(flags) && q.getGroupBy().equals(groupBy) && Objects.equal(q.getHaving(), having) && q.isDistinct() == distinct && q.isUnique() == unique && q.getJoins().equals(getJoins()) && Objects.equal(q.getModifiers(), modifiers) && q.getOrderBy().equals(orderBy) && q.getParams().equals(params) && q.getProjection().equals(projection) && Objects.equal(q.getWhere(), where); } else { return false; } }
private void serializeModifiersForDML(QueryMetadata metadata, SQLSerializer context) { if (metadata.getWhere() != null) { context.append(" and "); } else { context.append(getWhere()); } context.append("rownum <= "); context.visitConstant(metadata.getModifiers().getLimit()); }
public static Set<RelationalPath<?>> extract(QueryMetadata md) { Set<RelationalPath<?>> known = ImmutableSet.of(); known = DEFAULT.visitJoins(md.getJoins(), known); for (Expression<?> p : md.getProjection()) { known = p.accept(DEFAULT, known); } for (OrderSpecifier<?> o : md.getOrderBy()) { known = o.getTarget().accept(DEFAULT, known); } for (Expression<?> g : md.getGroupBy()) { known = g.accept(DEFAULT, known); } if (md.getHaving() != null) { known = md.getHaving().accept(DEFAULT, known); } if (md.getWhere() != null) { known = md.getWhere().accept(DEFAULT, known); } return known; }
void serializeForDelete(QueryMetadata metadata, RelationalPath<?> entity) { serialize(Position.START, metadata.getFlags()); if (!serialize(Position.START_OVERRIDE, metadata.getFlags())) { append(templates.getDelete()); } serialize(Position.AFTER_SELECT, metadata.getFlags()); append("from "); dmlWithSchema = true; handle(entity); dmlWithSchema = false; if (metadata.getWhere() != null) { append(templates.getWhere()).handle(metadata.getWhere()); } }
@Override public Void visit(SubQueryExpression<?> expr, QueryMetadata context) { QueryMetadata md = expr.getMetadata(); for (Map.Entry<ParamExpression<?>, Object> entry : md.getParams().entrySet()) { context.setParam((ParamExpression)entry.getKey(), entry.getValue()); } visit(md.getGroupBy(), context); visit(md.getHaving(), context); for (JoinExpression join : md.getJoins()) { visit(join.getTarget(), context); visit(join.getCondition(), context); } visit(md.getProjection(), context); visit(md.getWhere(), context); return null; }
@Nullable private Void visit(QueryMetadata md) { // select handle(md.getProjection()); // from for (JoinExpression join : md.getJoins()) { join.getTarget().accept(this, null); } // where handle(md.getWhere()); // group handle(md.getGroupBy()); // having handle(md.getHaving()); return null; }
@Override public Set<Expression<?>> visit(SubQueryExpression<?> expr, Set<Expression<?>> known) { Set<Expression<?>> old = known; final QueryMetadata md = expr.getMetadata(); known = visitJoins(md.getJoins(), known); for (Expression<?> p : md.getProjection()) { known = p.accept(this, known); } for (OrderSpecifier<?> o : md.getOrderBy()) { known = o.getTarget().accept(this, known); } for (Expression<?> g : md.getGroupBy()) { known = g.accept(this, known); } if (md.getHaving() != null) { known = md.getHaving().accept(this, known); } if (md.getWhere() != null) { known = md.getWhere().accept(this, known); } return old; }
@Test public void Clone() { QCat cat = QCat.cat; JPAQuery query = query().from(cat).where(cat.name.isNotNull()); JPAQuery query2 = query.clone(entityManager); assertEquals(query.getMetadata().getJoins(), query2.getMetadata().getJoins()); assertEquals(query.getMetadata().getWhere(), query2.getMetadata().getWhere()); query2.list(cat); }
@Test public void Clone() { QCat cat = QCat.cat; HibernateQuery query = query().from(cat).where(cat.name.isNotNull()); HibernateQuery query2 = query.clone(session); assertEquals(query.getMetadata().getJoins(), query2.getMetadata().getJoins()); assertEquals(query.getMetadata().getWhere(), query2.getMetadata().getWhere()); query2.list(cat); }
@Test public void Clone() { SAnimal cat = new SAnimal("cat"); JPASQLQuery query = query().from(cat).where(cat.name.isNotNull()); JPASQLQuery query2 = query.clone(entityManager); assertEquals(query.getMetadata().getJoins(), query2.getMetadata().getJoins()); assertEquals(query.getMetadata().getWhere(), query2.getMetadata().getWhere()); query2.list(cat.id); }
@Test public void Clone() { SAnimal cat = new SAnimal("cat"); HibernateSQLQuery query = query().from(cat).where(cat.name.isNotNull()); HibernateSQLQuery query2 = query.clone(session); assertEquals(query.getMetadata().getJoins(), query2.getMetadata().getJoins()); assertEquals(query.getMetadata().getWhere(), query2.getMetadata().getWhere()); //query2.list(cat.id); }
@Test public void test() throws IOException, ClassNotFoundException{ // create query JPAQuery query = query(); query.from(cat).where(cat.name.eq("Kate")).list(cat); QueryMetadata metadata = query.getMetadata(); assertFalse(metadata.getJoins().isEmpty()); assertTrue(metadata.getWhere() != null); assertTrue(metadata.getProjection().isEmpty()); QueryMetadata metadata2 = Serialization.serialize(metadata); // validate it assertEquals(metadata.getJoins(), metadata2.getJoins()); assertEquals(metadata.getWhere(), metadata2.getWhere()); assertEquals(metadata.getProjection(), metadata2.getProjection()); // create new query JPAQuery query2 = new JPAQuery(entityManager, metadata2); assertEquals("select cat\nfrom Cat cat\nwhere cat.name = ?1", query2.toString()); query2.list(cat); }