I’m working with Querydsl in my Spring Boot API for making some complex data filtering and when i declare the
PathBuilder variable i’ve seen that first you have to pass statically your class like
YourClass.class and then a string
variable for the constructor as shown below:
PathBuilder<Plan> entityPath = new PathBuilder<>(Plan.class, "plan");
So i was wondering why is necessary this string parameter and also why its name has to be the same as my class name, because when i delete it or modified it, the
entityPath doesn’t work.
PathBuilder) is by definition represents a path variable. In your case, the path ending up in your query would be
plan. Consecutively, you can build on to this path and create various path types. For example property retrieval:
entityPath.get("someProperty") will return a path expression that represents
plan.somePropety. So you can’t create
PathExpressions without an alias, because it would be essentially meaningless.
Then why this alias is not always inferred from the Path types, well simply put: because it is not related. The underlying entities used may have different naming strategies, you may want to mix up different path variables of the same type, you might reference a node that has a particular alias by itself.
The alias doesn’t have to be equivalent to the simple classname, it has to be equivalent to the alias it references from any of the from/join clauses in the query.