使用 QueryDSL 子类型时的空指针

Null pointer when using QueryDSL subtypes

我正在尝试按照以下几行创建一个子类型查询,但是即使我在汽车的车轮 属性 上设置了 @QueryInit("tyre"),轮胎也会返回为 null。

QWheel wheel = QCar.car.wheel;
QTyre tyre = wheel.as(QRoadWheel.class).tyre;    
BooleanExpression tyreFittedOverYearAgo 
    = tyre.fitted.lt(today.minusYears(1));
Iterable<Car> carsWithOldTyres = repo.findAll(tyreFittedOverYearAgo);

如何让 QueryDSL 在使用 as() 访问时初始化轮胎?

默认情况下,Querydsl 仅初始化直接引用属性。如果需要更长的初始化路径,则必须通过 com.mysema.query.annotations.QueryInit 用法在域类型中注释这些路径。 QueryInit 用于需要深度初始化的属性。

@Entity      
class Event {
    @QueryInit("customer")
    Account account;
}      

@Entity
class Account{
    Customer customer;    
}

@Entity
class Customer{
    String name;
    String address;
} 

这将初始化 customer.name ,customer.address

我一直无法确定原因,但我现在已经开始工作了,但是通过使用:

@QueryInit("*")
Tyre tyre;