可以使用queryDSL生成的类来引用类中的抽象方法吗?
这是一个例子:
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
class A {
@Id private Long id;
public getId/setId;
protected abstract Date finalDate();
}
@Entity
class B extends A {
private Date finalDate;
public getFinalDate/setFinalDate;
}
@Entity
class C extends A {
private B b;
public getFinalDate(){return b.getFinalDate());
}
我想使用这样的查询:
new JPAQuery<A>(em)
.select(a)
.where(a.finalDate.isNotNull())
.fetch();
但是在构建阶段(构造元类)之后,生成的 A 类(QA.class)没有任何类似的东西。
JB Nizets 的评论就是答案:
否,查询需要转换为 SQL,并由 数据库。数据库不知道也不关心你的类和 方法。它所知道的只是它的表和列。 – JB 尼泽 10 几小时前
在生成的 Qtype 中探索 _super。
public abstract class AbstractDao<T extends AbstractEntity, Q extends EntityPath<T>> {
private final Q qEntity;
private final QAbstractEntity qAbstractEntity;
public AbstractDao(Q qEntity, QAbstractEntity qAbstractEntity) {
this.qEntity = qEntity;
this.qAbstractEntity = qAbstractEntity;
}
}