/** * Create a new String typed path * * @param path existing path * @return property path */ public StringPath get(StringPath path) { StringPath newPath = getString(toString(path)); 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); }
public Projection( Class<T> targetClass ) { PathBuilder<T> entity = new PathBuilder<T>( targetClass, "entity" ); Field[] fields = targetClass.getFields(); Expression[] fieldExpressions = new Expression[fields.length]; for ( int i = 0; i < fields.length; i++ ) { fieldExpressions[i] = entity.getString( fields[i].getName() ); } bean = Projections.fields( targetClass, fieldExpressions ); }
/** * Create a new String typed path * * @param path existing path * @return property path */ public StringPath get(StringPath path) { StringPath newPath = getString(toString(path)); return addMetadataOf(newPath, path); }
@SuppressWarnings("unchecked") public static void orderBy(JPQLQuery<?> query, EntityPath<?> entity, List<String> order) { PathBuilder<?> builder = new PathBuilder(entity.getType(), entity.getMetadata()); Map<String, PathBuilder<?>> joins = Maps.newHashMap(); for (String entry : order) { String[] tokens = DOT.split(entry); if (tokens.length > 1) { String[] parent = new String[tokens.length - 1]; System.arraycopy(tokens, 0, parent, 0, tokens.length - 1); PathBuilder<?> parentAlias = join(query, builder, joins, StringUtils.join(parent, ".")); query.orderBy(parentAlias.getString(tokens[tokens.length - 1]).asc()); } else { query.orderBy(builder.getString(tokens[0]).asc()); } } }
@Test public void functionCall3() { RelationalFunctionCall<String> func = SQLExpressions.relationalFunctionCall(String.class, "TableValuedFunction", "parameter"); PathBuilder<String> funcAlias = new PathBuilder<String>(String.class, "tokFunc"); SQLQuery<?> q = new SQLQuery<Void>(HSQLDBTemplates.DEFAULT); q.from(survey) .join(func, funcAlias).on(survey.name.like(funcAlias.getString("prop")).not()); assertEquals("from SURVEY SURVEY\n" + "join table(TableValuedFunction(?)) as tokFunc\n" + "on not (SURVEY.NAME like tokFunc.prop escape '\\')", q.toString()); }
@Test public void functionCall2() { RelationalFunctionCall<String> func = SQLExpressions.relationalFunctionCall(String.class, "TableValuedFunction", "parameter"); PathBuilder<String> funcAlias = new PathBuilder<String>(String.class, "tokFunc"); SQLQuery<?> q = new SQLQuery<Void>(SQLServerTemplates.DEFAULT); q.from(survey) .join(func, funcAlias).on(survey.name.like(funcAlias.getString("prop")).not()); assertEquals("from SURVEY SURVEY\n" + "join TableValuedFunction(?) as tokFunc\n" + "on not (SURVEY.NAME like tokFunc.prop escape '\\')", q.toString()); }
@Test public void dynamicQuery2() { PathBuilder<Object> userPath = new PathBuilder<Object>(Object.class, "user"); NumberPath<Long> idPath = userPath.getNumber("id", Long.class); StringPath usernamePath = userPath.getString("username"); Expression<?> sq = select(idPath, usernamePath) .from(userPath).where(idPath.eq(1L)); SQLSerializer serializer = new SQLSerializer(Configuration.DEFAULT); serializer.handle(sq); //USER is a reserved word in ANSI SQL 2008 assertEquals("(select \"user\".id, \"user\".username\n" + "from \"user\"\n" + "where \"user\".id = ?)", serializer.toString()); }
@Test public void functionCall() { RelationalFunctionCall<String> func = SQLExpressions.relationalFunctionCall(String.class, "TableValuedFunction", "parameter"); PathBuilder<String> funcAlias = new PathBuilder<String>(String.class, "tokFunc"); SubQueryExpression<?> expr = select(survey.name).from(survey) .join(func, funcAlias).on(survey.name.like(funcAlias.getString("prop")).not()); SQLSerializer serializer = new SQLSerializer(new Configuration(new SQLServerTemplates())); serializer.serialize(expr.getMetadata(), false); assertEquals("select SURVEY.NAME\n" + "from SURVEY SURVEY\n" + "join TableValuedFunction(?) as tokFunc\n" + "on not (SURVEY.NAME like tokFunc.prop escape '\\')", serializer.toString()); }
@Test public void functionCall() { //select tab.col from Table tab join TableValuedFunction('parameter') func on tab.col not like func.col QSurvey table = new QSurvey("SURVEY"); RelationalFunctionCall<String> func = SQLExpressions.relationalFunctionCall(String.class, "TableValuedFunction", "parameter"); PathBuilder<String> funcAlias = new PathBuilder<String>(String.class, "tokFunc"); SubQueryExpression<?> expr = select(table.name).from(table) .join(func, funcAlias).on(table.name.like(funcAlias.getString("prop")).not()); Configuration conf = new Configuration(new SQLServerTemplates()); SQLSerializer serializer = new NativeSQLSerializer(conf, true); serializer.serialize(expr.getMetadata(), false); assertEquals("select SURVEY.NAME\n" + "from SURVEY SURVEY\n" + "join TableValuedFunction(?1) as tokFunc\n" + "on not (SURVEY.NAME like tokFunc.prop escape '\\')", serializer.toString()); }