By default Querydsl intializes only direct reference properties. In cases where longer initialization paths are required, these have to be annotated in the domain types via com.mysema.query.annotations.QueryInit usage. QueryInit is used on properties where deep initializations are needed. The following example demonstrates the usage.
@Entity class Event { @QueryInit("customer") Account account; } @Entity class Account{ Customer customer; } @Entity class Customer{ String name; // ... }
This example enforces the initialization of the account.customer path, when an Event path is initialized as a root path / variable. The path initialization format supports wildcards as well, e.g. "customer.*" or just "*".
The declarative path initialization replaces the manual one, which required the entity fields to be nonfinal. The declarative format has the benefit to be applied to all top level instances of a Query type and to enable the usage of final entity fields.