Type safety is the core principle of Querydsl. Queries are constructed based on generated query types that reflect the properties of your domain types. Also function/method invocations are constructed in a fully type-safe manner.
Consistency is another important principle. The query paths and operations are the same in all implementations and also the Query interfaces have a common base interface.
All query instances can be reused multiple times. After the projection the paging data (limit and offset) and the definition of the projection are removed.
To get an impression of the expressivity of the Querydsl query and expression types go to
the javadocs and explore